MFC combobox 加载图片,该如何处理
MFC combobox 加载图片
重绘了combo box
//加载图片函数
BOOL SetIconPic(UINT nResID, LPCTSTR lpTyp)
{
m_ImaIcon.Destroy();
// 查找资源
HRSRC hRsrc = ::FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(nResID), lpTyp);
if (hRsrc == NULL) return false;
// 加载资源
HGLOBAL hImgData = ::LoadResource(AfxGetResourceHandle(), hRsrc);
if (hImgData == NULL)
{
::FreeResource(hImgData);
return false;
}
// 锁定内存中的指定资源
LPVOID lpVoid = ::LockResource(hImgData);
LPSTREAM pStream = NULL;
DWORD dwSize = ::SizeofResource(AfxGetResourceHandle(), hRsrc);
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_ImaIcon.Load(pStream);
GlobalFree(hNew);
}
// 释放资源
::FreeResource(hImgData);
//__ResizeBtn();
return true;
}
调用 m_Size.SetIconPic(IDB_SCROLL, _T("Bitmap"));
combo box的背景图片还是没改变
设置断点 在if (hRsrc == NULL) return false;终止
求大侠解决
------解决方案--------------------
在if (hRsrc == NULL) return false;终止
p这里 HRsrc是NULL吗?那就是你的资源没有找到啊
重绘了combo box
//加载图片函数
BOOL SetIconPic(UINT nResID, LPCTSTR lpTyp)
{
m_ImaIcon.Destroy();
// 查找资源
HRSRC hRsrc = ::FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(nResID), lpTyp);
if (hRsrc == NULL) return false;
// 加载资源
HGLOBAL hImgData = ::LoadResource(AfxGetResourceHandle(), hRsrc);
if (hImgData == NULL)
{
::FreeResource(hImgData);
return false;
}
// 锁定内存中的指定资源
LPVOID lpVoid = ::LockResource(hImgData);
LPSTREAM pStream = NULL;
DWORD dwSize = ::SizeofResource(AfxGetResourceHandle(), hRsrc);
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_ImaIcon.Load(pStream);
GlobalFree(hNew);
}
// 释放资源
::FreeResource(hImgData);
//__ResizeBtn();
return true;
}
调用 m_Size.SetIconPic(IDB_SCROLL, _T("Bitmap"));
combo box的背景图片还是没改变
设置断点 在if (hRsrc == NULL) return false;终止
求大侠解决
------解决方案--------------------
在if (hRsrc == NULL) return false;终止
p这里 HRsrc是NULL吗?那就是你的资源没有找到啊