BOOL CSubDlgMain::OnEraseBkgnd(CDC* pDC)
{
HBITMAP hBmp=(HBITMAP) LoadImage(AfxGetInstanceHandle(), "D:\\pro\\res\\station.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
CDC mpDC;
mpDC.CreateCompatibleDC(pDC);
HBITMAP OldhBmp=(HBITMAP) mpDC.SelectObject(hBmp);
size=g_ResLoad.GetBitmapSize(_T("\\res\\station.bmp"));
pDC->BitBlt(0,0,size.cx,size.cy,&mpDC, 0,0,SRCCOPY);
mpDC.SelectObject(OldhBmp);
DeleteObject(hBmp);
return true;
}
因为在我的代码里hBmp为局部变量,所以每次刷新都要从硬盘文件读资源速度慢,但如把hBmp定义到头文件,初始化时LoadImage,就不能在这里用DeleteObject(hBmp)了,只能到最后DeleteObject(hBmp),又听说LoadImage加载后产生了一个GDI对象,而系统的GDI对象是有限的,那要是在头文件定义很多的hBmp会有问题吧。想问下各位有什么好的办法没,大家是怎么处理这种从文件加载的情况的。
{
HBITMAP hBmp=(HBITMAP) LoadImage(AfxGetInstanceHandle(), "D:\\pro\\res\\station.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
CDC mpDC;
mpDC.CreateCompatibleDC(pDC);
HBITMAP OldhBmp=(HBITMAP) mpDC.SelectObject(hBmp);
size=g_ResLoad.GetBitmapSize(_T("\\res\\station.bmp"));
pDC->BitBlt(0,0,size.cx,size.cy,&mpDC, 0,0,SRCCOPY);
mpDC.SelectObject(OldhBmp);
DeleteObject(hBmp);
return true;
}
因为在我的代码里hBmp为局部变量,所以每次刷新都要从硬盘文件读资源速度慢,但如把hBmp定义到头文件,初始化时LoadImage,就不能在这里用DeleteObject(hBmp)了,只能到最后DeleteObject(hBmp),又听说LoadImage加载后产生了一个GDI对象,而系统的GDI对象是有限的,那要是在头文件定义很多的hBmp会有问题吧。想问下各位有什么好的办法没,大家是怎么处理这种从文件加载的情况的。
解决方案 »
- error C2440: '=' : cannot convert from 'wchar_t *' to 'char *'
- GetUserName()函数得到的是一堆乱码,为什么?
- 如何获取单个程序进程所占用的内存空间大小
- 如何实现3D模型在程序中的动作
- 怎样显示某一文件夹里面的所有图片以缩略图显示
- ATL控件如何得到网页表单中输入的值?
- 哪位DX有vc.net 类库或ADO.net类库
- 一个困惑的问题?
- CreateEvent,SetEvent和WaitForSingleObject函数的问题
- 请教各位大侠RedrawWindow在模式对话框中怎么用?
- 小女子求教,请大家无论如何帮忙
- ODBC操作EXCEL文件的问题
就是说到程序退出时再调用DeleteObject(hBmp)吧