MFC窗口颜色的设置
本文主要介绍对话框背景色以及控件颜色的设置(SetDialogBkColor()不再被支持)。
对话框背景色的设置
1、重载OnPaint()函数,即WM_PAINT消息,代码如下所示:
void CtestDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), ); // 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + ) / ;
int y = (rect.Height() - cyIcon + ) / ; // 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
//CDialogEx::OnPaint(); //设置为绿色背景
CRect rect;
CPaintDC dc(this);
GetClientRect(rect);
dc.FillSolidRect(rect,RGB(,,));
}
}
2、重载OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息:
a)在对话框的.h文件中添加CBrush类的成员m_brush
b)在对话框的.cpp文件中的OnInitDialog()中添加以下代码(背景红色):
m_brush.CreateSolidBrush(RGB(,,));
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(,,,,FW_SEMIBOLD,FALSE,FALSE,,
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(,,)); //设置字体颜色
pWnd->SetFont(font); //设置字体
HBRUSH B = CreateSolidBrush(RGB(,,));
//创建画刷
return (HBRUSH) B; //返回画刷句柄
}
case CTLCOLOR_EDIT: //对所有编辑框的设置
{
if(IDC_EDIT2 == pWnd->GetDlgCtrlID())
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(,,));
pWnd->SetFont(font);
HBRUSH B = CreateSolidBrush(RGB(,,));
return (HBRUSH) B;
}
if(IDC_EDIT3 == pWnd->GetDlgCtrlID())
{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(,, ));
pWnd->SetFont(font);
HBRUSH B = CreateSolidBrush(RGB(,,));
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 静态文本
MFC窗口颜色的设置的更多相关文章
- android studio设置窗口颜色和字体
1.设置左边窗口颜色和字体: 设置中间代码编辑窗口:
- 将Cocos2dX渲染到MFC窗口上
引用:http://www.cnblogs.com/windeer/archive/2012/11/18/2767750.html 引言 现在智能手机已经慢慢进入大众化,移动类应用开始火爆起来,游戏类 ...
- 【001:转载 eclipse中颜色的设置】
转自于:http://www.cnblogs.com/arci/archive/2011/01/23/1942646.html Eclipse颜色设置 参考配色方案: http://www.cs.cm ...
- 同时支持控制台和MFC窗口程序的APP
BOOL CMyApp::InitInstance() { if ( m_bShowGui==FALSE ) { FILE *stream = NULL; AllocConsole(); // 开辟控 ...
- MFC窗口重绘
Invalidate()与 UpdateAllViews()有什么分别 Invalidate()是让程序重画窗口. UpdateAllViews()是在DOC/VIEW结构中, 当一个视图的数据改变后 ...
- MFC窗口分割以及各窗口间的通讯
一个偶然的机会又重新接触了MFC窗口的分割,自己结合资料重新写了一个窗口分割的程序,现将具体流程跟大家分享一下: 1.我们先创建一个MFC单文档类的程序,具体分割方式先将单文档整个客户区分成两行一列, ...
- Eclipse字体颜色的设置方法
Eclipse字体颜色的设置方法.. ----------------- .---------------------此时我们就希望设置一下字体eclipse字体颜色,让他像其它编辑器一样的,有不同的 ...
- 保护眼睛(改变窗口颜色和Pdf背景颜色)
保护眼睛(改变窗口颜色和Pdf背景颜色) 昨天用了一个好朋友告诉我的保护眼睛的方法,效果很不错哦-- 今天告诉大家,一起爱护偶们明亮的眼睛吧!!! 首先需要改一下设置,如果常常用电脑很容易 ...
- 原来MFC窗口样式随字符集而改变
以前好像发现,MFC窗口上按钮的自动样式有时是有亮色边框3D效果的,有时没有,不知道原因,也没有追究,今天正好有机会发现了原因,原来是随字符集而改变的. 1.Unicode版本下的窗口 2.未设置的窗 ...
随机推荐
- linux的一些目录结构
home:家.用户的家. 普通用户的家目录文件在home下 例如:一个用户名为tom的用户,在home下就会存在tom的目录. root:超级管理员root的家 etc:存放配置文件 usr:存放共享 ...
- js高级-函数变量提升
var a = 10; function f1(){ console.log(a) //undefined 函数变量提升了 函数执行之前想创建了函数的EC 把函数里面声明的变量初始化undefine ...
- 使用jquery如何获取现在时间、并且格式化
参考网址:https://www.jb51.net/article/94626.html var now=new Date(); $("#total").html(formatTi ...
- mysql limit语句
[mysql limit语句] 代码: SELECT * FROM table LIMIT 2 OFFSET 1; 比如这个SQL ,limit后面跟的是2条数据,offset后面是从第1条开始读取. ...
- Bootstrap 辅助类
[Bootstrap 辅助类] 1.背景色 2. <p>插入符实例 <span class="caret"></span> </p> ...
- spring boot IDEA 开发微服务
本文是参考:https://blog.csdn.net/u011001084/article/details/79040701 的基础上自己实际操作编写. 在我们开始创建微服务之前,需要安装Cons ...
- asp.net MVC 异常处理
http://www.cnblogs.com/think8848/archive/2011/03/18/1987849.html http://www.cnblogs.com/snowdream/ar ...
- javascript学习笔记(一):基础、输出、注释、引用、变量、数据类型
javascript脚本必须位于<script></script>之间,<script>标签可以位于<head>中,也可以位于<body>中 ...
- smtp扫描
nc扫描 nc -nv ip号 25 nmap扫描
- python return 及lambda函数
return有两个作用: 1.用来返回函数的运行结果,或者调用另外一个函数.比如max()函数 >>> def fun(a,b): #返回函数结果. return max(a,b) ...