2013-01-24 18 views
2

我對Windows編程相當陌生,並且一直遵循Forger的Win32 API編程教程。我一直在試圖在窗口內繪製圖像。使用WinAPI繪製圖像:LoadBitmap有效,但LoadImage()不會?

說完看了類似的問題,這個代碼似乎加載一個位圖是正確的:

HBITMAP testImage == NULL; 
case WM_CREATE: 
    testImage = (HBITMAP)LoadImage(NULL, L"C:\\ScreenSnip.bmp", IMAGE_BITMAP, 498, 304, LR_LOADFROMFILE); 
    if(testImage == NULL) { 
     MessageBox(NULL, L"NO IMAGE LOADED!", L"Error!", MB_ICONEXCLAMATION | MB_OK); 
    } 
break; 

我在上面的位置稱爲ScreenSnip.bmp的圖像,它的尺寸爲498 * 304。但是,LoadImage不起作用,並且testImage的值始終爲空。

我已經嘗試使用LoadBitmap()加載圖像作爲資源,並且工作,這就是爲什麼我沒有包括我的代碼的其餘部分。它似乎是LoadImage()上面導致的問題,但我不明白爲什麼。

任何人有任何想法?我正在使用Windows 7 64位上的VC++運行此操作。

+0

你試過用'cxDesired'和'cyDesired'設置爲零?在文檔中沒有跡象表明除了圖標或光標以外,這些「所需的大小」參數是允許的。 –

+0

我已經嘗試過,它沒有任何區別,我很害怕! – BeneGal

+4

*如果函數失敗,返回值爲NULL。要獲得擴展的錯誤信息,請調用GetLastError。* – chris

回答

-1

使用testImage = (HBITMAP)LoadImage(NULL, L"C:\\ScreenSnip.bmp", IMAGE_BITMAP, 498, 304, LR_LOADFROMFILE); 您使用室內用寬L 「C:..」 所以你必須使用LoadImageW

+0

如果他不小心傳遞了一個'WCHAR *',並且期望'char *',他會得到一個編譯錯誤。 – jamesdlin