| 设置控件颜色的主要目的是为了解决控件文字背景色不透明的问题。当向一个有背景色的界面上放置控件后,由于控件文字的背景色与界面背景色不符,使文字背后留下难看的灰块。现在我定义了可设置背景色和前景色的控件,只要使控件背景色与界面背景色相同,问题就解决了。 设置控件颜色和字体时必须重载该控件对应的类,在其中加入相关的颜色控制和字体函数。各种控件的做法完全相同,只是重载的类不一样。 注:对于静态文本控件(Static Text)、单选按钮(Radio Button)、复选按钮(Check Box)、组合框(Group Box)和编辑控件(Edit Box)都可以用相同的方法设置文字颜色和背景色,但这种方法对按钮(Button)无效,修改按钮的颜色和字体请参考文章:《可设置字体和颜色的按钮》。 以静态文本控件(Static Text)为例: ①用ClassWizard添加新类,基类选为CStatic,新类名称设为CMyStatic。 以下为CStatic类的相关部分: 在 MyStatic.h 中加入变量和接口函数的定义:
在 MyStatic.cpp 中加入以下内容: 在构造函数中,设置变量的初值
用ClassWizard重载消息“=WM_CTLCOLOR”(注:不是WM_CTLCOLOR),在其中修改控件的前景色和背景色:
另外,为方便调用,再定义三个接口函数: //设置控件文字颜色
//设置控件背景颜色
//设置控件字体
其中FontHight为字体高度,FontName为字体名。 由于新字体由new生成,必须显式回收,这项工作可以在CMyButton类的析构函数中进行:
这样一个可设置颜色和字体的静态文本类就定义好了。使用时先在对话框中加入静态文本控件,修改它的ID(注意:必须修改它的ID值,否则无法为它定义变量),然后用ClassWizard为它定义控制变量,把它的类型设置为CStaticEx;在对话框的OnInitDialog()函数中利用控件变量设置控件的颜色和字体就可以了。 以上就是修改静态文本控件的颜色和字体的方法,其它控件的做法完全相同,只是对应的基类不同。 单选按钮、复选按钮和组合框可以用 CButton类 作为基类生成新的扩展类 CButtonEx;编辑控件用 CEdit类 作为基类生成扩展类 CEditEx。而CButtonEx类和CEditEx类的内容与上述的CStaticEx类完全相同,详见示例程序。 在实际应用中,还有几个问题需要注意一下,一是单选按钮通常是成组使用的,用ClassWizard只能为一组单选按钮的第一个添加控制变量,其它的只能用手工加入。再就是添加组合框时也必须修改ID,否则无法定义变量。 示例程序界面:
本文所用MFC函数速查: | |||||||
如何修改几种控件的颜色和字体
最新推荐文章于 2024-05-13 22:22:14 发布
本文详细介绍了如何通过重载控件类的方法来自定义静态文本、单选按钮、复选按钮、组合框和编辑控件的颜色与字体,包括实现步骤、关键函数和示例程序。此外,还讨论了在实际应用中需要注意的问题,如单选按钮成组使用时的控制变量添加限制和组合框ID修改要求。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
LobeChat
AI应用
LobeChat 是一个开源、高性能的聊天机器人框架。支持语音合成、多模态和可扩展插件系统。支持一键式免费部署私人ChatGPT/LLM 网络应用程序。

2589

被折叠的 条评论
为什么被折叠?



