У меня есть Dll и файл заголовка для него, и я пытаюсь создать COM-оболочку на C++ для использования в C#.
Для большинства функций это было очень просто, так как они возвращались int
или string
.HBITMAP * Bitmap to .net Bitmap
У меня есть эта структура в файле заголовка.
virtual HRESULT STDMETHODCALLTYPE GetBMP(
int Width,
int Height,
HBITMAP *Bitmap) = 0;
Моя проблема заключается в том, что, так как я выход из моей лиги с C++ я не знаю, как преобразовать HBITMAP
к чему-то более присвоенной стиль .net
Спасибо заранее, и, пожалуйста, простите меня, если писал глупостей
UPDATE: Я пытался что-то вроде этого:
HBITMAP GetBMP(int Width, int Height)
{
HBITMAP bm = 0;
m_piHelper->GetBMP(Width,Height,&bm);
return bm ;
}
проблема, очевидно, после того, как т hat in C# как преобразовать из «HBITMAP __ *» в «System.IntPtr», чтобы использовать его с bitmap.fromHbitmap
Объявление '[DllImport]' C# для 'GetBMP' - это место, где вы объявляете третий параметр как' out IntPtr'. – GSerg
no im не импортировать dll в C# im, пытающийся написать C++ wrapper –
Тогда вы путаете всех нас. «Управляемая оболочка» - это то, что вы пишете на C#. Если вы пишете C++-оболочку, это может быть оболочка COM. Я отредактировал ваш вопрос, чтобы отразить это. Не стесняйтесь вносить изменения в редактирование. (Возможно, вы * используете * управляемый C++?) – GSerg