对话框找不到WM_ERASEBKGND消息的解决方法与对话框背景图片的载入方法
生活随笔
收集整理的這篇文章主要介紹了
对话框找不到WM_ERASEBKGND消息的解决方法与对话框背景图片的载入方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
From:? http://wmnmtm.blog.163.com/blog/static/38245714201041535119716/
為了讓對話框程序更為漂亮,一般都是在窗口的WM_ERASEBKGND消息處理函數OnEraseBkgnd中添加如下代碼.
BOOL CMFCtestDlg::OnEraseBkgnd(CDC* pDC) {// TODO: Add your message handler code here and/or call defaultCRect rect;CPaintDC dc(this);GetClientRect(&rect);dc.FillSolidRect(rect,RGB(0,255,0));//對話框背景顯示為綠色return TRUE;// return CDialog::OnEraseBkgnd(pDC); }?????? 但在對話框程序中,我們打開MFC ClassWizard中的Message maps,找不到WM_ERASEBKGND消息的.雖然對話框也是窗口,所以對話框也會有此消息的響應的.但是MFC把對話框中的窗口消息WM_ERASEBKGND給過濾掉了,這樣做是為了讓我們更著重于對話框的特有消息與控件消息.為了在對話框中能處理WM_ERASEBKGND消息,我們就需要把這個消息找出來.打開MFC ClassWizard,選擇Class Info項.然后在Advanced options下的Message filter選擇: Window ,點擊OK,關閉MFC ClassWizard,后,重新打開就可以看到WM_ERASEBKGND消息了.
?
對話框載入背景圖也可以在WM_ERASEBKGND消息處理函數中進行.如下代碼
BOOL CMFCtestDlg::OnEraseBkgnd(CDC* pDC) {// TODO: Add your message handler code here and/or call defaultCRect rect;CPaintDC dc(this);GetClientRect(&rect);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap bmpBKG;bmpBKG.LoadBitmap(IDB_DLGBITMAP);//載入位圖,IDB_DLGBITMAP是在ResourceView里邊導入的位圖IDBITMAP 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); }?
查看/建立類向導/ClassInfo/Advanced Options/:Message filter:dialog->window
總結
以上是生活随笔為你收集整理的对话框找不到WM_ERASEBKGND消息的解决方法与对话框背景图片的载入方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏化思维
- 下一篇: 澜沧江某水电站下坝址坝址初步设计