我在资源中载入了很多gif图片(二进制),现在需要一幅一幅轮流显示,非常耗内存资源,所以我想显示下一幅之前把前一幅释放,该如何做?另外,请教怎样释放句柄?
解决方案 »
- vc6.0更改启动窗口
- VC中测试本机是否可以连接到百度
- 怎么读取读取函数
- 急啊,关于PreTranslateMessage的问题
- 黑龙江程序员联盟(13711613)这里高手很多,最好是黑龙江的呀,希望你加入
- 我这个类里这样定义函数参数类型和成员变量类型为何会报错呢?
- 我看了iostream文件,不明白,里面没什么东西啊,lib目录是干吗,装了sdk怎么用,不明白,可能我缺乏基础的,我也不知道缺少什么基础。请
- 连续按键和单独按键怎么区别?
- 一台计算机能否连接两个IC卡读写器?
- CMFCPropertyGridFileProperty,CMFCPropertyGridFontProperty自带按钮调整
- 各位大哥好,请问在vb中怎么把鼠标设置为沙漏形,然后又怎么恢复
- VC.net有没有和WINXP一样的加密方式?"
先调用
BOOL CVOImage::SetBitmap(HDC hdc, DWORD dwResourceID, LPCTSTR pcszClass, HMODULE hModule)
{
if(!g_hdc)
g_hdc = CreateCompatibleDC(hdc);
if(m_hbitmap)
DeleteObject(m_hbitmap); HRESULT hr;
BYTE szBuffer[1024] = {0};
DecompressImageInfo dii; CVOResource res(hModule, dwResourceID, pcszClass); if(!res.IsLoaded())
{
return FALSE;
}
res.SetUserData(0); // Fill in the 'DecompressImageInfo' structure
dii.dwSize = sizeof( DecompressImageInfo ); dii.pbBuffer = szBuffer; dii.dwBufferMax = 1024; dii.dwBufferCurrent = 0;
dii.phBM = &m_hbitmap; dii.ppImageRender = NULL; dii.iBitDepth = GetDeviceCaps(hdc,BITSPIXEL);
dii.lParam = ( LPARAM ) &res;
dii.hdc = g_hdc;
dii.iScale = g_iScale;
dii.iMaxWidth = g_iMaxWidth;
dii.iMaxHeight = g_iMaxHeight;
dii.pfnGetData = GetImageResourceData;
dii.pfnImageProgress = ImageProgress;
dii.crTransparentOverride = ( UINT )
// Process and decompress the image data
hr = DecompressImageIndirect( &dii );
BITMAP bmp;
GetObject(m_hbitmap, sizeof(BITMAP), &bmp);
m_dwWidth = bmp.bmWidth;
m_dwHeight = bmp.bmHeight;
return TRUE;
}再调用
HBITMAP CVOImage::Copy()
{
BITMAP bm;
HBITMAP hNew,hOld;
hOld =(HBITMAP) SelectObject(g_hdc, m_hbitmap); ::GetObject(m_hbitmap, sizeof(BITMAP), &bm); HDC hdc = CreateCompatibleDC(g_hdc);
hNew = CreateCompatibleBitmap(g_hdc,bm.bmWidth,bm.bmHeight);
SelectObject(hdc, hNew); if(BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, g_hdc, 0, 0, SRCCOPY))
{
::SelectObject(hdc,hOld);
}
DeleteDC(hdc);
return hNew;
}