MFC中,默认的图像资源为bmp或icon,如果手头没有这两类图像,就必须手动添加,并编写相应的代码。
具体的步骤如下。
1.在资源窗口添加自定义资源。
右键菜单选择"Add Resource...",点击"Custom..."按钮,在对话框中输入资源类型(Resource type),这里填入JPG,点击“OK”按钮,资源列表里会出现“JPG”类型的资源,然后向该类型的资源中添加.jpg资源,修改资源ID号,在此改为IDR_JPG。
2.
CImage m_image;
HRSRC hRsc = FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_JPG), _T("JPG"));
if(hRsc == NULL) return;
HGLOBAL hImgData = LoadResource(AfxGetResourceHandle(), hRsc);
if(hImgData == NULL)
{
FreeResource(hImgData);
return;
}
LPVOID lpVoid = ::LockResource(hImgData);
LPSTREAM pStream = NULL;
DWORD dwSize = SizeofResource(AfxGetResourceHandle(), hRsc);
HGLOBAL hNew = GlobalAlloc(GHND, dwSize);
LPBYTE lpByte = (LPBYTE)::GlobalLock(hNew);
memcpy(lpByte, lpVoid, dwSize);
GlobalUnlock(hNew);//解除内存中的指定资源
HRESULT ht = CreateStreamOnHGlobal(hNew, TRUE, &pStream);
if(ht != S_OK)
{
GlobalFree(hNew);
}
else
{
m_image.Load(pStream);
GlobalFree(hNew);
}
FreeResource(hImgData);