本文主要介绍对话框背景色以及控件颜色的设置(SetDialogBkColor()不再被支持)。

对话框背景色的设置

1、重载OnPaint()函数,即WM_PAINT消息,代码如下所示:

void CtestDlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标
        dc.DrawIcon(x, y, m_hIcon);}else{//CDialogEx::OnPaint();//设置为绿色背景
        CRect   rect; CPaintDC   dc(this); GetClientRect(rect); dc.FillSolidRect(rect,RGB(0,255,0));  }
}

2、重载OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息:

  a)在对话框的.h文件中添加CBrush类的成员m_brush

  b)在对话框的.cpp文件中的OnInitDialog()中添加以下代码(背景红色):

m_brush.CreateSolidBrush(RGB(255,0,0));

  c)重载OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor),代码如下:

HBRUSH CtestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);// TODO:  在此更改 DC 的任何特性if(nCtlColor == CTLCOLOR_DLG) return   m_brush;   //返加红色刷子  // TODO:  如果默认的不是所需画笔,则返回另一个画笔return hbr;
}

控件颜色的设置

重载OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息:

HBRUSH CtestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);// TODO:  在此更改 DC 的任何特性// 设置显示字体CFont * font=new CFont;font->CreateFont(16,0,0,0,FW_SEMIBOLD,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH&FF_SWISS,_T("Arial"));switch(nCtlColor){case CTLCOLOR_STATIC: //对所有静态文本框的设置
        {pDC->SetBkMode(TRANSPARENT);//设置背景为透明pDC->SetTextColor(RGB(255,255,0)); //设置字体颜色pWnd->SetFont(font); //设置字体HBRUSH B = CreateSolidBrush(RGB(125,125,255));//创建画刷return (HBRUSH) B; //返回画刷句柄
        }case CTLCOLOR_EDIT: //对所有编辑框的设置
        {if(IDC_EDIT2 == pWnd->GetDlgCtrlID()){pDC->SetBkMode(TRANSPARENT);pDC->SetTextColor(RGB(255,255,0));pWnd->SetFont(font);HBRUSH B = CreateSolidBrush(RGB(125,125,125));return (HBRUSH) B;}if(IDC_EDIT3 == pWnd->GetDlgCtrlID()){pDC->SetBkMode(TRANSPARENT);pDC->SetTextColor(RGB(255,0, 0));pWnd->SetFont(font);HBRUSH B = CreateSolidBrush(RGB(125,125,0));return (HBRUSH) B;}}default:return CDialog::OnCtlColor(pDC,pWnd, nCtlColor);}// TODO:  如果默认的不是所需画笔,则返回另一个画笔return hbr;
}

注:

nCtlColor的类别有以下几种:

  • CTLCOLOR_BTN  按钮控件
  • CTLCOLOR_DLG  对话框
  • CTLCOLOR_EDIT  编辑框
  • CTLCOLOR_LISTBOX  列表框
  • CTLCOLOR_MSGBOX   消息框
  • CTLCOLOR_SCROLLBAR  滚动条
  • CTLCOLOR_STATIC  静态文本

转载于:https://www.cnblogs.com/gaohongchen01/p/4068743.html

MFC窗口颜色的设置相关推荐

  1. 计算机窗口颜色不能自定义,用RBG颜色设置自定义颜色

    这个是Mac自带的测色计 快捷键shift + command + c即可复制RBG格式的颜色 #DD0000 这个是csdn 的logo里的红色 我们得到的是十六位颜色代码 但是UIColor()只 ...

  2. Java实现设置窗口颜色和大小

    1.问题描述:利用Swing设计一个简单的GUI应用程序,窗口标题设为"First GUI Program",窗口大小设为(500, 300),窗口的背景色设为红色,居中显示. 2 ...

  3. 设置窗口颜色保护眼睛(win7/xp)

    如今,人们越来越重视自己和家人的健康了,饮食开始注意科学合理搭配.目的只有一个.        那就是让自己的身体尽量处于良好的健康状态.但是,有不少经常接触和使用电脑的人.        却忽略了长 ...

  4. 电脑保护眼睛的颜色设置-把你的电脑窗口颜色设置为淡淡的绿色

    面对着电脑干一天活儿--------------眼睛感觉有些累: 面对着电脑干一星期活--------------眼睛感觉挺累: 面对电脑干一个月的活--------------眼睛有点受不了: 工作 ...

  5. 修改Eclipse窗口颜色设置

    1.修改编辑框颜色设置:Window->Preferences->Editor->TextEditor->background. 2.修改PackageExploer只能是修改 ...

  6. python更换窗口颜色设置_python – 默认窗口颜色Tkinter和十六进制颜色代码

    不确定你到底在找什么,但这会有用吗? import Tkinter mycolor = '#%02x%02x%02x' % (64, 204, 208) # set your favourite rg ...

  7. Linux配置scheme环境,vim配置文件 + colorscheme koehler设置窗口颜色

    配置文件在哪里 当我们使用Vim时, 你需要知道一系列的配置文件. 这些配置文件的位置依赖于Vim的安装位置和你所使用的操作系统. 通常, 有三个配置文件, 你是必须知道在哪里能找到的. vimrc ...

  8. mfc笔记--摘录关于裁剪窗口区域的设置,WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解

    声明,原文来源:http://www.cnblogs.com/helloj2ee/archive/2009/05/29/1491822.html 1.求助MSDN 我的第一步当然是求助MSDN.在MS ...

  9. MFC进度条控件颜色的设置

    平台:VS2013 内容介绍:创建进度条控件Progress Control控件并给它颜色的设置.在VC6.0里头可以直接用SendMessage函数就可以设置颜色了,但是在VS里头是不行的,要对进度 ...

最新文章

  1. 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)
  2. PacBio But Not Illumina Technology Can Achieve Fast, Accurate and Complete Closure of the High GC, C
  3. python如何安装panda数据库_python怎么安装pandas
  4. 30岁之前必须明白的道理(你现在知道此生无憾了)
  5. Configuration类在网页实现对web.config的修改[转]
  6. IDA Pro的patch插件 KeyPatch
  7. Swift 计算文本的size
  8. 荣耀平板5升级鸿蒙,荣耀能否“升级”鸿蒙?赵明正式确认:华为做得好会考虑采用!...
  9. Ext this.getView(...).saveDocumentAs is not a function
  10. 这个Javascript“要求”是什么?
  11. 如何做一个让开发人员看得起的软件测试人员
  12. 测试-分辨率兼容测试
  13. Python自动登录QQ的实现示例
  14. Zynq-Linux移植学习笔记之13-i2c驱动配置
  15. redis过期策略及定期策略配置
  16. 秃友进销存标准版内存注册机 Cracked.By.HackWm.
  17. mybatis的缓存,看这一篇就够了!
  18. 百度Sugar数据可视化领域优势地位因何受到挑战?
  19. Part 2 如何进行埋点(内附埋点文档模板)
  20. 十字隧道工程盾构机穿过马骝洲水道

热门文章

  1. session.merge 缓存不更新_这几个缓存更新的设计你都知道吗?
  2. Bad Request: amp;quot;requirement failed: Local path /root/.livy-sessions/
  3. elasticsearch 安装过程中可遇到的问题
  4. 聊聊高并发(二十二)解析java.util.concurrent各个组件(四) 深入理解AQS(二)
  5. spark和HSQL的连接join方式
  6. OkHttp实现登录注册验证
  7. iOS项目组件化历程
  8. 《Adobe Illustrator CC 2014中文版经典教程(彩色版)》目录—导读
  9. android UI设计时须要注意遵循的设计原则
  10. python scoket、SocketServer简单实现文件上传下载