VC++ 2010-05-15 15:51:19 閱讀37 評論0 字號:大中小
為了讓對話(huà)框程序更為漂亮,一般都是在窗口的WM_ERASEBKGND消息處理函數OnEraseBkgnd中添加如下代碼.
BOOL CMFCtestDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CRect rect;
CPaintDC dc(this);
GetClientRect(&rect);
dc.FillSolidRect(rect,RGB(0,255,0));//對話(huà)框背景顯示為綠色
return TRUE;
// return CDialog::OnEraseBkgnd(pDC);
}
但在對話(huà)框程序中,我們打開(kāi)MFC ClassWizard中的Message maps,找不到WM_ERASEBKGND消息的.雖然對話(huà)框也是窗口,所以對話(huà)框也會(huì )有此消息的響應的.但是MFC把對話(huà)框中的窗口消息WM_ERASEBKGND給過(guò)濾掉了,這樣做是為了讓我們更著(zhù)重于對話(huà)框的特有消息與控件消息.為了在對話(huà)框中能處理WM_ERASEBKGND消息,我們就需要把這個(gè)消息找出來(lái).
打開(kāi)MFC ClassWizard,選擇Class Info項.然后在A(yíng)dvanced options下的Message filter選擇: Window ,點(diǎn)擊OK,關(guān)閉MFC ClassWizard,后,重新打開(kāi)就可以看到WM_ERASEBKGND消息了.
對話(huà)框載入背景圖也可以在WM_ERASEBKGND消息處理函數中進(jìn)行.如下代碼BOOL CMFCtestDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CRect rect;
CPaintDC dc(this);
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBKG;
bmpBKG.LoadBitmap(IDB_DLGBITMAP);//載入位圖,IDB_DLGBITMAP是在ResourceView里邊導入的位圖ID
BITMAP bmp;
bmpBKG.GetBitmap(&bmp);
CBitmap* pOldBMP = dcMem.SelectObject(&bmpBKG);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
return TRUE;
// return CDialog::OnEraseBkgnd(pDC);
}
查看/建立類(lèi)向導/ClassInfo/Advanced Options/:Message filter:dialog->window
聯(lián)系客服