首先我是基于对话框的MFC,我的对话框是可以resize的
其实,我想给对话框添加背景,所以我在OnEraseBkgnd(CDC* pDC)里面,利用GDI+ 双缓冲技术添加背景,代码如下:
BOOL Ctest1Dlg::OnEraseBkgnd(CDC* pDC)
{
CRect rect;
GetClientRect(&rect);
CDC memDC; //首先定义一个显示设备对象
CBitmap bitmap; //定义一个位图对象
CBitmap *pOldBitmap = NULL;
//建立与屏幕显示兼容的内存显示设备,这时还不能绘图,因为没有地方画
memDC.CreateCompatibleDC(pDC);
//建立一个与屏幕显示兼容的位图,至于位图的大小,可以用窗口的大小
bitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
pOldBitmap = memDC.SelectObject(&bitmap);
Graphics graphics( memDC );
Image image(_T("F:\\1.jpg"));
graphics.DrawImage( &image, 0, 0, rect.Width( ), rect.Height( ) );
//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt( 0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY );
memDC.SelectObject(pOldBitmap);
bitmap.DeleteObject();
memDC.DeleteDC();
DeleteObject(pOldBitmap);
return TRUE;
}
可是当我用鼠标改变对话框的大小时,会出现以下现象
请问大家如何解决