在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口语笔记(1) - Hold

    how are you holding up? 你还撑得住吧?你还好吧?撑住太不容易了吧!

  2. ORACLE RAC集群硬件资源管理与单节点的区别

    硬件资源是由OS kernel管理的,应用软件是不能直接访问硬件的,必须通过OS kernel提供的API接口间接访问,OS kernel 除了要完成用户的请求,还通过进程调度等机制来控制多进程对资源 ...

  3. 【解题报告】[动态规划] RQNOJ - PID273 / 马棚问题

    原题地址:http://www.rqnoj.cn/problem/273 题目大意:中文题不说了. 设从第i匹马到第j-1匹马放在一个马棚里得到的系数为f(i,j). 状态表示:dp[i][j]表示前 ...

  4. Android Bitmap实战技巧

    注:本文大量参考谷歌官方文档自http://developer.android.com/intl/zh-cn/training/displaying-bitmaps/index.html.如果你自学能 ...

  5. Android之Socket群组聊天

    在这只做了一个简单的例子,没有用到数据库,思路就是客户端发送信息到服务器端,服务器端转发所有数据到客户端,校验服务器端发来消息是否是自己发出的,如果是自己发出的,则不显示自己的消息 贴一下Androi ...

  6. 前台实现下载xml功能

    阅读目录 介绍问题 MIME TYPE 解决问题 介绍问题 平时我们通过href去链接文件时,一般情况是对于zip.jar等下载功能,而对于xml.css.html.js等都是查看功能. 现在下面的代 ...

  7. Symfony2学习笔记之HTTP Cache

    富web应用程序的本质意味着它们的动态.无论你的应用程序多么有效率,每个请求比起静态文件来说总会存在很多的耗费.对于大多数web程序来说,这没什么. Symfony2非常的轻快,无论你做些严重超载的请 ...

  8. Bootstrap学习笔记上(带源码)

    阅读目录 排版 表单 网格系统 菜单.按钮 做好笔记方便日后查阅o(╯□╰)o bootstrap简介: ☑  简单灵活可用于架构流行的用户界面和交互接口的html.css.javascript工具集 ...

  9. 点击图片名,让图片在pictureBox中显示 z

    public string filepath; public Form1() { InitializeComponent(); } private void button1_Click(object ...

  10. 5、NFC概述

    什么是NFC NFC(Near Field Communication,近场通信),是一种数据传输技术.但与Wi-Fi.蓝牙.红外线等数据传输技术的一个主要差异就是有效距离一般不能超过4厘米. NFC ...