MFC窗口颜色的设置
本文主要介绍对话框背景色以及控件颜色的设置(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窗口颜色的设置相关推荐
- 计算机窗口颜色不能自定义,用RBG颜色设置自定义颜色
这个是Mac自带的测色计 快捷键shift + command + c即可复制RBG格式的颜色 #DD0000 这个是csdn 的logo里的红色 我们得到的是十六位颜色代码 但是UIColor()只 ...
- Java实现设置窗口颜色和大小
1.问题描述:利用Swing设计一个简单的GUI应用程序,窗口标题设为"First GUI Program",窗口大小设为(500, 300),窗口的背景色设为红色,居中显示. 2 ...
- 设置窗口颜色保护眼睛(win7/xp)
如今,人们越来越重视自己和家人的健康了,饮食开始注意科学合理搭配.目的只有一个. 那就是让自己的身体尽量处于良好的健康状态.但是,有不少经常接触和使用电脑的人. 却忽略了长 ...
- 电脑保护眼睛的颜色设置-把你的电脑窗口颜色设置为淡淡的绿色
面对着电脑干一天活儿--------------眼睛感觉有些累: 面对着电脑干一星期活--------------眼睛感觉挺累: 面对电脑干一个月的活--------------眼睛有点受不了: 工作 ...
- 修改Eclipse窗口颜色设置
1.修改编辑框颜色设置:Window->Preferences->Editor->TextEditor->background. 2.修改PackageExploer只能是修改 ...
- python更换窗口颜色设置_python – 默认窗口颜色Tkinter和十六进制颜色代码
不确定你到底在找什么,但这会有用吗? import Tkinter mycolor = '#%02x%02x%02x' % (64, 204, 208) # set your favourite rg ...
- Linux配置scheme环境,vim配置文件 + colorscheme koehler设置窗口颜色
配置文件在哪里 当我们使用Vim时, 你需要知道一系列的配置文件. 这些配置文件的位置依赖于Vim的安装位置和你所使用的操作系统. 通常, 有三个配置文件, 你是必须知道在哪里能找到的. vimrc ...
- mfc笔记--摘录关于裁剪窗口区域的设置,WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解
声明,原文来源:http://www.cnblogs.com/helloj2ee/archive/2009/05/29/1491822.html 1.求助MSDN 我的第一步当然是求助MSDN.在MS ...
- MFC进度条控件颜色的设置
平台:VS2013 内容介绍:创建进度条控件Progress Control控件并给它颜色的设置.在VC6.0里头可以直接用SendMessage函数就可以设置颜色了,但是在VS里头是不行的,要对进度 ...
最新文章
- 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)
- PacBio But Not Illumina Technology Can Achieve Fast, Accurate and Complete Closure of the High GC, C
- python如何安装panda数据库_python怎么安装pandas
- 30岁之前必须明白的道理(你现在知道此生无憾了)
- Configuration类在网页实现对web.config的修改[转]
- IDA Pro的patch插件 KeyPatch
- Swift 计算文本的size
- 荣耀平板5升级鸿蒙,荣耀能否“升级”鸿蒙?赵明正式确认:华为做得好会考虑采用!...
- Ext this.getView(...).saveDocumentAs is not a function
- 这个Javascript“要求”是什么?
- 如何做一个让开发人员看得起的软件测试人员
- 测试-分辨率兼容测试
- Python自动登录QQ的实现示例
- Zynq-Linux移植学习笔记之13-i2c驱动配置
- redis过期策略及定期策略配置
- 秃友进销存标准版内存注册机 Cracked.By.HackWm.
- mybatis的缓存,看这一篇就够了!
- 百度Sugar数据可视化领域优势地位因何受到挑战?
- Part 2 如何进行埋点(内附埋点文档模板)
- 十字隧道工程盾构机穿过马骝洲水道
热门文章
- session.merge 缓存不更新_这几个缓存更新的设计你都知道吗?
- Bad Request: amp;quot;requirement failed: Local path /root/.livy-sessions/
- elasticsearch 安装过程中可遇到的问题
- 聊聊高并发(二十二)解析java.util.concurrent各个组件(四) 深入理解AQS(二)
- spark和HSQL的连接join方式
- OkHttp实现登录注册验证
- iOS项目组件化历程
- 《Adobe Illustrator CC 2014中文版经典教程(彩色版)》目录—导读
- android UI设计时须要注意遵循的设计原则
- python scoket、SocketServer简单实现文件上传下载