在MFC中设置控件的背景色、字体、字体颜色、标题等属性主要是利用OnCtlColor函数来实现。

如:
HBRUSH CAlarm::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
//设置静态控件的背景色和文本颜色
if (pWnd->GetDlgCtrlID() == IDC_STATIC_SHOW_MSG)
{
pWnd->SetWindowText("123");
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,0));
//m_hStaticBkColor是CBrush类类型的变量,要在构造函数中初始化为指定的颜色
hbr = m_hStaticBkColor;
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
注意在OnCtlColor函数中:
控件的标题、字体通过CWnd类的SetWindowText和SetFont函数来设置。
控件的背景色通过添加一个CBrush类类型的画刷来设置,控件的字体背景色、字体颜色通过CDC类的SetBkMode、SetBkColor和SetTextColor函数来设置。此外,不要在OnCtlColor函数中调用CDC类的TextOut函数,如果调用了SetBkMode(TRANSPARENT)再去调用SetBkColor就没有作用了(没有先后顺序,SetBkMode(TRANSPARENT)可以在随意的位置)。
 
 
此外,我们有时会在OnPaint或OnInitDialog或OnInitialUpdate函数中设置控件的外观属性。
但是在OnPaint函数中设置控件的字体颜色(即SetBkMode和SetTextColor)只能在TextOut函数中有效,在SetWindowText函数中是无效的。TextOut函数一般在OnPaint函数中调用的,并且可以通过SetBkMode和SetTextColor设置字体的颜色和字体的背景色。当然SetWindowText也可以在OnPaint函数中调用,只不过就不能在OnPaint函数中通过SetBkMode和SetTextColor设置字体的颜色和字体的背景色。
 
 
因此,改变控件的外观属性主要是在OnCtlColor函数中实现,当然还要据实际情况,有可能在OnPaint或OnInitDialog或OnInitialUpdate函数中设置控件的外观属性。此外,如果要改变控件背景色,除了在OnCtlColor中利用CBrush类类型的画刷来设置外,还可以利用CDC类型的FillSolidRect函数在合适的函数中来设置。至于字体的设置,据实际情况在合适的函数中设置,如果要用到TextOut的,就在OnPaint函数中调用吧。
 
转自:http://blog.sina.com.cn/s/blog_6230f1a30100wc21.html

VC、MFC中设置控件的背景色、标题、字体颜色、字体要注意的地方[转]的更多相关文章

  1. MFC中Listbox控件的简单使用

    MFC中listbox控件是为了显示一系列的文本,每个文本占一行.   Listbox控件可以设置属性为: LBS_CHILD   :(默认)子窗口 LBS_Visible :(默认)可视 LBS_M ...

  2. Android线程中设置控件

    在Android中经常出现多线程中设置控件的值报错的情况,今天教大家封装一个简单的类避免这样的问题,同样也调用实现也非常的方便. 自定义类: /** * Created by wade on 2016 ...

  3. Android在代码中设置控件的drawableLeft,drawableRight,drawableTop,drawableBottom。

    根据业务的需要,要在代码中设置控件的drawableLeft,drawableRight,drawableTop,drawableBottom属性. 我们知道在xml中设置的方法为:android:d ...

  4. MFC中ComboBox控件用法

    MFC ComboBox 一.入门篇 ComboBox (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项 ...

  5. MFC中给控件添加变量,DoDataExchange中

    DoDataExchange函数其实是一项数据动态绑定技术.比如你在写动态按钮过程中须对按钮添加变量时,怎么添加?控件类已经写好了,其变量是已经固定的.你要添加新的变量就要用到DoDataExchan ...

  6. MFC中按钮控件的用法笔记(转)

    VC学习笔记1:按钮的使能与禁止 用ClassWizard的Member Variables为按钮定义变量,如:m_Button1:则m_Button1.EnableWindow(true); 使按钮 ...

  7. windows10UWP:如何在xaml中设置控件为 public ?

    windows10UWP中,由于使用页面导航,操作在不同一个页面的控件需求经常遇到. 如果要对另一个page里面的控件进行操作,那么这个控件必须设置为 public .在 xaml 设置控件的方法是: ...

  8. Android中设置控件的背景颜色的方式整理

    版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 在Android开发中,经常需要设置控件的背景颜色或者图片的src颜色. 效果图 代码分析 根据使用的方法不同,划分为 setBackgro ...

  9. 在MFC中改变控件的TAB顺序

    在MFC界面中,控件的TAB顺序如果乱了,不合理,可能会使界面出现意料之外的显示. 例如,在用Spin Control来对Edit Control内的值进行增减时,如果Edit Control.Spi ...

随机推荐

  1. 【英语】Bingo口语笔记(62) - 生气道歉场景的表达

  2. 【英语】Bingo口语笔记(64) - Beat系列

  3. POJ 2249 Binomial Showdown

    // n 个 数 取 k个数的取法// C(n,k) 注意些细节#include <iostream> #include <string> #include<sstrea ...

  4. RAC实例 表空间 维护

    先配置一下监听,这样我们就可以从客户端进行连接了. 我这里写了三种连接. 第一种是正常方式,一般都采用这种方式,后面的rac1和rac2 是方便测试.因为如果用第一种方式的话,客户端连哪个实例是随机的 ...

  5. mysql的data数据库只有.frm 而.myd和.myi没有,使用正常

    正常 data目录下的数据库文件只要表结构文件frm文件...甚是不解  钻研过后知道 mysql的默认数据库引擎模式呗设置成了InnoDB innodb表没有没有MYD和.MYI,其数据文件对应于i ...

  6. 仿Twitter登陆移动背景效果

    有使用Twitter客户端的朋友应该有发现在登录的时候,屏幕上方和下方的云朵图片是不断移动着的,再加上Twitter那支可爱的小鸟在不停的动着,给人的感觉就好像是小鸟在飞翔一样,感觉效果很不错. 我也 ...

  7. [Everyday Mathematic]20150217

    设 $f:\bbR\to\bbR$ 二阶可微, 适合 $f(0)=1$, $f'(0)=0$, 并且 $$\bex f''(x)-5f'(x)+6f(x)\geq 0. \eex$$ 试证: $$\b ...

  8. 使用 Google Fonts 为网页添加美观字体

    前言 文字是网页中很重要的组成部分.为文字选择一个合适的字体,能够更好的展现一个网站的个性,表达所要传递的信息,同时吸引用户来产生兴趣. 说到字体,我们首先会想到 CSS 里面的 font,例如: & ...

  9. Linux下安装Vapor

    1.官网下载Vapor软件(二进制安装文件) 注:注意版本,linux下可以在终端输入-uname -l 查看系统版本 2.cd到Vapor软件所在目录 3.解压:1)gunzip vapor-*** ...

  10. CMDB反思3

    CMDB模型设计1 http://blog.vsharing.com/xqscool/A1274634.html 分类的问题上比较有感悟.在之前编写新版的CMDB模型的时候,曾将刀片机.x86服务器. ...