2013-05-01 3 views
0

나는 DLL과 헤더 파일을 갖고 있으며 C#에서 사용할 COM 래퍼를 만들려고합니다.
기능의 대부분은 int 또는 string을 반환 했으므로 매우 간단했습니다.HBITMAP 비트 맵에서 .net 비트 맵

헤더 파일에이 구조체가 있습니다.

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

내 문제는 내가 탈출구 C 내 리그의 때죠 ++ 내가 반드시 사전에 .NET 스타일에 충당 뭔가

감사를 HBITMAP를 변환하는 방법을 알고하지 않는 것이하십시오이다 바보 같은 짓

을 쓴 경우에 저를 용서

UPDATE : 문제는 분명히 t 이후

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에서 사용하는 방법

+0

'GetBMP'에 대한'[DllImport]'C# 선언문은 세번째 파라미터를'out IntPtr'로 선언 한 곳입니다. – GSerg

+0

아니요, C++에서 dll을 가져 오지 않았습니다. im은 C++ 래퍼를 쓰려고합니다. –

+0

그럼 우리 모두를 혼란스럽게 만들었습니다. "Managed wrapper"는 C#으로 작성한 것입니다. C++ 래퍼를 작성하는 경우 COM 래퍼가 될 수 있습니다. 이 점을 반영하기 위해 질문을 편집했습니다. 언제든지 편집을 수정하십시오. (아마도 당신은 * 관리되는 C++을 사용하고 있습니까?) – GSerg

답변

1

매개 변수는 out IntPtr이어야합니다.

그런 다음 GetBMP을 호출 할 추가 기능을 만든 다음 Bitmap.FromHbitmap을 호출하여 비트 맵을 반환 할 수 있습니다. 그런 기능은 원래 hbitmapDeleteObject이어야합니다.

0

아마도 System.IntPtr을 사용해보십시오.

관련 문제