【发布时间】:2013-05-30 10:07:40
【问题描述】:
我使用以下代码将 PNG 图像加载到图片控件中。
....
LPSTREAM pStrmDefImg = TurnStream(MAKEINTRESOURCE(resourceID),_T("PNG"));
if(pStrmDefImg != NULL) {
CImage img;
img.Load(pStrmDefImg); // Load from stream
pictureCtrl.SetBitmap(img);
pStrmDefImg->Release();
}
.....
LPSTREAM TurnStream(LPCTSTR Resource, LPCTSTR Type)
{
char* pData = 0;
DWORD dwSize = 0;
int nRes = GetResource(Resource,Type,&pData,&dwSize);
LPSTREAM pStream;
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwSize+1);
void *pImageData = GlobalLock(hGlobal);
memcpy(pImageData, pData, dwSize);
HRESULT hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pStream);
return pStream;
}
您在此代码中发现任何问题吗?没有报错,但是图片控件不显示加载的图片。
【问题讨论】:
-
此代码有效。我必须更改图片控件属性中的
type。我将它设置为Bitmap,它会显示 png 图像。 -
嘿,你能说说
GetResource(Resource,Type,&pData,&dwSize);函数吗?
标签: visual-c++ mfc png