0

我有一个 Dll 和它的头文件,我正在尝试在 C++ 中创建一个 COM 包装器以在 C# 中使用。
对于大多数函数来说,它非常简单,因为它们返回intor string

我在头文件中有这个结构。

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 一起使用

4

2 回答 2

1

参数应该是out IntPtr

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

于 2013-05-01T15:38:59.183 回答
0

您或许应该尝试 System.IntPtr。

于 2013-05-01T15:41:01.587 回答