读书人

关于导入位图后最小化程序位图消失?解

发布时间: 2012-02-09 18:22:27 作者: rapoo

关于导入位图后最小化程序位图消失?
void CFindfileDlg::OnButton2()
{
// TODO: Add your control notification handler code here
CDC *pDC=GetDC();
CDC MemDC;
CString str( "wrong.bmp ");
HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,str, IMAGE_BITMAP, 20, 20, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
CBitmap *pBitmap = new CBitmap;

pBitmap-> Attach(hBitmap);
//pBitmap = CBitmap::FromHandle(hBitmap);
//上述二句话实际效果完全相同.

MemDC.CreateCompatibleDC(pDC); // 创建与屏幕DC兼容的DC,这样BitBlt过去才是一样的坐标系
MemDC.SelectObject(pBitmap);
pDC-> BitBlt(0, 0,800, 800, &MemDC, 0, 0, SRCCOPY);
pBitmap-> Detach();
delete pBitmap;
}


点这个按钮画了图片后,再把程序最小化恢复后图片又没了。怎么解决这个问题???

[解决办法]
当然没了
pBitmap都delete了,对象都没了,还会有图

应该把 pBitmap 定成全局,OnButton2() 时LoadImage
OnPaint时BitBlt

[解决办法]
在OnPaint()中绘制,
void CFindfileDlg::OnButton2()
中invalidate()刷新;

读书人网 >VC/MFC

热点推荐