如何將HICON轉換爲VC++中的HBITMAP?如何將HICON轉換爲VC++中的HBITMAP?
我知道這是一個常見問題解答,但我在Google上找到的所有解決方案都不起作用。我需要的是一個函數,它需要一個參數HICON並返回HBITMAP。
即使圖標是24位,16位或8位,如果可能轉換爲32位位圖,也是最大的。
這是代碼,我不知道哪裏出了問題:
HBITMAP icon_to_bitmap(HICON Icon_Handle) {
HDC Screen_Handle = GetDC(NULL);
HDC Device_Handle = CreateCompatibleDC(Screen_Handle);
HBITMAP Bitmap_Handle =
CreateCompatibleBitmap(Device_Handle,GetSystemMetrics(SM_CXICON),
GetSystemMetrics(SM_CYICON));
HBITMAP Old_Bitmap = (HBITMAP)SelectObject(Device_Handle,Bitmap_Handle);
DrawIcon(Device_Handle, 0,0, Icon_Handle);
SelectObject(Device_Handle,Old_Bitmap);
DeleteDC(Device_Handle);
ReleaseDC(NULL,Screen_Handle);
return Bitmap_Handle;
}
我正在做同樣的事情,但得到的位圖總是1bit /像素。很奇怪....... – jondinham
請用示例代碼展開您的問題。聽起來像你的位圖不是用正確的比特/像素創建的,但不能肯定地說不看代碼。 – Miguel
添加了代碼,從屏幕創建的DC,因此它應該是32位/像素,請看看.... – jondinham