这是我用于加载其他图像格式的代码。它依赖于 GDI+,因此您需要在使用之前和之后进行初始化和关闭(每个程序一次就足够了)
加载程序:
// BMP, GIF, JPEG, PNG, TIFF, Exif, WMF, and EMF
HBITMAP mLoadImg(WCHAR *szFilename)
{
HBITMAP result=NULL;
Gdiplus::Bitmap* bitmap = new Gdiplus::Bitmap(szFilename,false);
bitmap->GetHBITMAP(NULL, &result);
delete bitmap;
return result;
}
初始化/关闭
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
static Gdiplus::GdiplusStartupInput gdiplusStartupInput;
static ULONG_PTR gdiplusToken;
// so we can load all the image formats that windows supports natively - (I'm using a transparent PNG on the main dialog)
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
// make things look pretty
InitCommonControls();
// run the app
//DialogBox(hInstance, MAKEINTRESOURCE(DLG_MAIN), NULL, (DLGPROC)DialogProc);
//
//
//
// clean-up stuff
Gdiplus::GdiplusShutdown(gdiplusToken);
return 0;
}
自然,这是针对基于对话框的应用程序(对话框在 resource.rc 中定义)——而不是基于框架的应用程序或 MFC 应用程序。关键是,您只需要在使用前进行初始化,然后关闭即可。