做美容顾问压力大吗:对话框找不到WM_ERASEBKGND消息的解决方法与对话框背景图片的载入方法 - 加菲的...

来源:百度文库 编辑:偶看新闻 时间:2024/04/26 06:38:33

对话框找不到WM_ERASEBKGND消息的解决方法与对话框背景图片的载入方法

VC++ 2010-05-15 15:51:19 阅读37 评论0 字号:大中

为了让对话框程序更为漂亮,一般都是在窗口的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));//对话框背景显示为绿色

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 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);

}

 

查看/建立类向导/ClassInfo/Advanced Options/:Message filter:dialog->window

开机出现“找不到sys.exe”对话框 现在要处理问题,怎么找不到对话框呀? 开机总显示两个对话框,说找不到service文件 QQ对话框中老弹出“qqallinone 找不到元素”,求救? 求救!电脑弹出dundll对话框说是找不到指定的模块? 每次电脑开机后总有个对话框说:找不到changedisplay.exe CAD打开图纸,弹出对话框提示找不到字体 开机后会出现找不到文件的对话框 开始菜单中的运行对话框找不到了怎么办呀? 看电影为何出现找不到文件的对话框,如何解决? QQ对话框中老弹出“qqallinone 找不到元素”,求救?急急! 开机后,弹出对话框说window找不到文件’1’怎么办 开机弹出对话框“windows找不到文件1”怎么解决? 开机出现‘mouse1.dll文件找不到’的对话框,怎么办? 加载c:\PROGRA~1\COMMON~1SYSTERM\MSDC32.DLL时出错,找不到指定模块,启动时出现这个对话框怎么让他永远消 在网站上看电影,看了两分钟就会弹出找不到影片的对话框 咋回事啊? 开机到桌面后,总是弹出对话框"找不到DLL-文件-USERENV.DLL"怎么回事啊? 为什么开机总会首先弹出ChangDisplay.exe对话框,说什么找不到ChangDisplay? 右击选择“打开方式”,会出现Windows找不到文件的对话框,请问怎么解决 为什么我的电脑开机时会出现找不到指定的模块的对话框 我在vc++6.0中找不到对话框中的控件工具箱,如何使它出现? 为什么每次启动电脑时总会出现对话框"windows找不到文件C:window sws32 在QQ里面网上发言对话框里打字找不到中文输入法是怎么回事? 我电脑开机后总弹出一个说找不到“ChangeDisply.exe”文件的对话框