设置对话框背景使用如下方法
但每次对话框弹出时背景图片就像拉幕一样,并不是一下都显示出来,每次重画时都这样。
请问该如何解决呢?究竟应该如何正确设置对话框背景?
BOOL CCharCltDlg::OnEraseBkgnd(CDC* pDC)
{
CBitmap bitmap;
CRect client;
CDC dc;
GetClientRect(&client);
BITMAP hb;
bitmap.LoadBitmap(IDB_BACKGROUND);
dc.CreateCompatibleDC(pDC);
dc.SelectObject(&bitmap);
bitmap.GetObject(sizeof(hb),&hb);
pDC->StretchBlt(0,0,client.right-client.left,client.bottom-client.top,
&dc,
0,0,hb.bmWidth,hb.bmHeight,SRCCOPY);
return TRUE;
return CDialog::OnEraseBkgnd(pDC);
}
但每次对话框弹出时背景图片就像拉幕一样,并不是一下都显示出来,每次重画时都这样。
请问该如何解决呢?究竟应该如何正确设置对话框背景?
BOOL CCharCltDlg::OnEraseBkgnd(CDC* pDC)
{
CBitmap bitmap;
CRect client;
CDC dc;
GetClientRect(&client);
BITMAP hb;
bitmap.LoadBitmap(IDB_BACKGROUND);
dc.CreateCompatibleDC(pDC);
dc.SelectObject(&bitmap);
bitmap.GetObject(sizeof(hb),&hb);
pDC->StretchBlt(0,0,client.right-client.left,client.bottom-client.top,
&dc,
0,0,hb.bmWidth,hb.bmHeight,SRCCOPY);
return TRUE;
return CDialog::OnEraseBkgnd(pDC);
}
//return CDialog::OnEraseBkgnd(pDC);注释掉
return CDialog::OnEraseBkgnd(pDC);不注释掉,也没关系--反正他永远不会被执行.
不过你的代码GDI资源没有释放,也可能会有问题。