文档详情

改变对话框背景的颜色

d****1
实名认证
店铺
DOCX
9.56KB
约2页
文档ID:188314612
改变对话框背景的颜色_第1页
1/2

黄基前(广西桂林)方法一:调用cwinapp类的成员函数setdialogbkcolor来实现其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色下面的例子是将应用程序对话框设置为蓝色背景和红色文本,步骤如下:在 cexampledlgapp ::initinstance()中添加如下代码:bool cexampledlgapp: : initinstance (){…cexampledlgdlg dlg;m_pmainwnd = &dlg;〃先于domodal()调用,将对话框设置为蓝色背景、红色文本setdialogbkcolor(rgb(0,0,255),rgb(255,0,0));int nresponse = dlg.domodal();…}编译并运行,此时对话框的背景色和文本色已发生了改变值得注意的是:在调用domodal()之前必须先调用setdialogbkcolor,且此方法是将改变应用程序中所有的对话框颜色,并不能针对某一个指定的对话框方法二:重载onpaint(),即wm_paint消息有关代码如下(以上例工程为准):void cexampledlgdlg::onpaint(){if (isiconic())...else{crect rect;cpaintdc dc(this);//我加:此处值得商酌getclientrect(rect);dc.fillsolidrect(rect,rgb(0,255,0)); // 设置为绿色背景cdialog::onpaint();}方法三:重载 onctlcolor (cdc* pdc, cwnd* pwnd, uint nctlcolor),即wm_ctlcolor消息。

具体步骤如下(以上例工程为准):①在cexampledlgdlg的头文件中,添加一 cbrush的成员变量:class cexampledlgdlg : public cdialog{ protected:cbrush m_brush;};② 在oninitdialog()函数中添加如下代码:bool cexampledlgdlg::oninitdialog(){♦ ♦♦// todo: add extra initialization herem_brush.createsolidbrush(rgb(0, 255, 0)); // 生成一绿色刷子♦♦♦}③ 利用 classwizard 重载 onctlcolor(…),即 wm_ctlcolor 消息:hbrush cexampledlgdlg::onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor){/***这里不必编写任何代码!**下行代码要注释掉** hbrush hbr = cdialog::onctlcolor(pdc, pwnd, nctlcolor);*/return m_brush; 〃返加绿色刷子}方法四:还是重载 onctlcolor (cdc* pdc, cwnd* pwnd, uint nctlcolor),即wm_ctlcolor消息。

具体步骤如下(以上例工程为准):步骤①、②同上方法三中的步骤①、②步骤③利用classwizard重载onctlcolor(…)(即wm_ctlcolor消息)时则有些不同:hbrush cexampledlgdlg::onctlcolor(cdc* pdc, cwnd* pwnd, uint nctlcolor){hbrush hbr = cdialog::onctlcolor(pdc, pwnd, nctlcolor);〃在这加一条是否为对话框的判断语句if(nctlcolor ==ctlcolor_dlg)return m_brush; //返加绿色刷子return hbr;}----编译并运行即可关于如何改变对话框背景颜色的问题,可能还有很多种不同方法可以实现,笔者在这仅举出四种常见的方法其中方法三的编程似乎有点不太规范,方法四则要比方法三正统些。

下载提示
相关文档
正为您匹配相似的精品文档