2011-04-28 5 views
4

내 NET 2.0 Winforms 응용 프로그램은 Vista 및 Windows 7에서 아름답게 작동하지만 Bitmap.GetHbitmap()에 대한 호출은 Windows XP (SP3 포함)에서 null을 반환합니다. 기본 Bitmap은 PNG이며 자원에서로드됩니다. 올바르게로드되어 GetHbitmap()으로 내려갑니다. 같은 결과로 두 가지 오버로드를 모두 호출 해 보았습니다. 디버깅 및 사용자가 수동으로 객체를 삭제해야이 기능을 사용할 때 .GetHBitmapBitmap.GetHbitmap() XP에서 실패합니다

와 함께 작업하는 동안

+1

그냥 명확하게, 당신은 대신'null'하지만'IntPtr.Zero'을받지 못하고있어 권리? –

+0

관련 DLL을 업데이트 해보십시오. http://www.microsoft.com/downloads/en/details.aspx?familyid=6A63AB9C-DF12-4D41-933C-BE590FEAA05A&displaylang=en –

+0

죄송합니다. 맞아요. 'null'이 아니고'IntPtr.Zero'입니다. – wpfwannabe

답변

0

메모리 누수를 조심해!

MSDN 예 : http://msdn.microsoft.com/en-us/library/1dz311e4.aspx

<System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")> _ 
    Private Shared Function DeleteObject (ByVal hObject As IntPtr) As Boolean 
    End Function 



    Private Sub DemonstrateGetHbitmap() 
     Dim bm As New Bitmap("Picture.jpg") 
     Dim hBitmap As IntPtr 
     hBitmap = bm.GetHbitmap() 

     ' Do something with hBitmap. 
     DeleteObject(hBitmap) 
    End Sub 

과 비슷한 질문 : Image loading memory leak with C#

감사