我有一个Dll和它的头文件,并且试图在C ++中创建一个COM包装器以在C#中使用。
对于大多数函数而言,这非常简单,因为它们返回了intstring

我在头文件中有此结构。

virtual HRESULT STDMETHODCALLTYPE GetBMP(
            int Width,
            int Height,
            HBITMAP *Bitmap) = 0;


我的问题是,由于我与C ++脱节,所以我不知道如何将HBITMAP转换为更适合.net风格的内容

在此先感谢您,如果写了愚蠢的东西请原谅

更新:
我尝试过这样的事情:

HBITMAP GetBMP(int Width, int Height)
{

    HBITMAP bm = 0;
    m_piHelper->GetBMP(Width,Height,&bm);
    return bm ;

}


问题显然是在c#之后,如何从'HBITMAP __ *'转换为'System.IntPtr以与bitmap.fromHbitmap一起使用

最佳答案

参数应为out IntPtr

然后,您可以创建一个附加函数,该函数将调用GetBMP,然后调用Bitmap.FromHbitmap以返回位图。然后,此类功能必须DeleteObject原始hbitmap

关于c# - HBITMAP *位图到.net位图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16321230/

10-10 12:28