mfc中设置statictext的字体和颜色_mfc设置静态文本字体颜色-程序员宅基地

技术标签: statictext  颜色  字体  常用问题解决  MFC  

字体在控制事件中实现,颜色在OnCtlColor中实现。

界面上两个button,一个statictext。


设置statictext的value变量为m_csText;

其余变量为:

BOOL m_bBlue;
BOOL m_bRed;

在构造函数中初始化:

CTextColorExampleDlg::CTextColorExampleDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CTextColorExampleDlg::IDD, pParent)
, m_csText(_T(""))
, m_bBlue(FALSE)
, m_bRed(FALSE)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}


在OnInitDialog()中可先设置一下默认值,比如字体和文字内容:

CFont font;
font.CreatePointFont(150, _T("宋体"));
GetDlgItem(IDC_STATIC_TEXT)->SetFont(&font);	
m_csText = _T("文字颜色显示");
UpdateData(FALSE);


然后在dialog的事件中选择WM_CTLCOLOR,生成OnCtlColor接口

HBRUSH CTextColorExampleDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

	// TODO:  在此更改 DC 的任何特性
	if(IDC_STATIC_TEXT == pWnd-> GetDlgCtrlID()) 
	{ 
		if (TRUE == m_bBlue)
		{
			pDC->SetTextColor(RGB(51, 153, 255));	//蓝色
		}
		else if (TRUE == m_bRed)
		{
			pDC->SetTextColor(RGB(255, 0, 0));	//红色		
		}
		else
		{
			//其余默认情况,貌似不写都没有问题
			pDC->SetTextColor(RGB(0, 0, 0));
		}
		
	}
	// TODO:  如果默认的不是所需画笔,则返回另一个画笔
	return hbr;
}

两个button点击事件:

void CTextColorExampleDlg::OnBnClickedButtonBlue()
{
	// TODO: 在此添加控件通知处理程序代码	
	
	//修改字体
	CFont font;
	font.CreatePointFont(100, _T("微软雅黑"));
	GetDlgItem(IDC_STATIC_TEXT)->SetFont(&font);

	//颜色
	m_bBlue = TRUE;
	m_bRed = FALSE;
	m_csText = _T("现在显示是蓝色");
	UpdateData(FALSE);
	return;
}


void CTextColorExampleDlg::OnBnClickedButtonRed()
{
	// TODO: 在此添加控件通知处理程序代码	
	m_bBlue = FALSE;
	m_bRed = TRUE;
	m_csText = _T("现在显示是红色");
	UpdateData(FALSE);
	//GetDlgItem(IDC_STATIC_TEXT)->InvalidateRect(NULL);
	return;
}


运行效果:









版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/langxm2006/article/details/76736942

智能推荐

ESP32开发之蓝牙播放mp3_esp32 蓝牙音频-程序员宅基地

文章浏览阅读1.6k次。esp32 蓝牙播放mp3_esp32 蓝牙音频

Python数据结构与算法(5)--搜索和排序,你掌握了多少-程序员宅基地

文章浏览阅读797次,点赞24次,收藏27次。Map():创建一个空映射,返回空映射对象;put(key, val):将key‐val关联对加入映射中,如果key已存在,将val替换旧关联值;get(key):给定key,返回关联的数据值,如不存在,则返回None;del:通过del map[key]的语句形式删除key‐val关联;len():返回映射中key‐val关联的数目;in:通过key in map的语句形式,返回key是否存在于关联中,布尔值#我们用一个HashTable类来实现ADT Map,该类包含了两个列表作为成员。

linux0.12-6-4(head.s)-程序员宅基地

文章浏览阅读440次。学习记录,打卡。卷起来! (-:

实战c++中的vector系列--使用vector构造二维数组-程序员宅基地

文章浏览阅读1.3w次,点赞5次,收藏16次。二维数组有时候被用到,但是很少有人会使用vector来构造一个二维数组。首先,需要明确的是,在计算机的世界中,根本不存在二维数组,只是使用者的一个概念罢了。其实我们所谓的二维数组也必须是一段连续的内存。很多情况下,我们可以把常规的二维数组用一个vector表示,只要索引对应即可。那么,我若一意孤行呢,我就想vector里面放一个vector呢?#include #incl

【Spring学习笔记】11、AOP-程序员宅基地

文章浏览阅读65次。文章目录11.1、什么是AOP11.2、AOP在Spring中的作用11.3、使用Spring实现Aop11.1、什么是AOPAOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的 一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的

ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践-程序员宅基地

文章浏览阅读772次。解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头、正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现。此处手札 供后人参考~1.第一步 服务端设置响应头header('Access-Control-Allow-Origin:*'); //支持全域名访问,不安全,部署后需要固定限制为客户端网址

随便推点

MySQL远程操作记录删除_mysql 远程访问-程序员宅基地

文章浏览阅读341次。1、改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"mysql-uroot-pvmwaremysql>usemysql;mysql>updateusersethost='%'w...

python修饰符作用_python函数修饰符@的使用-程序员宅基地

文章浏览阅读334次。python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等等。创建函数修饰符的规则:(1)修饰符是一个函数(2)修饰符取被修饰函数为参数(3)修饰符返回一个新函数(4)修饰符维护被维护函数的签名例子1:被修饰函数不带参数def log(func):def wrapper():print('log开始 ...')func()print('log结束 ...')re...

cocos creator 十三水棋牌_福州十三水源码下载-程序员宅基地

文章浏览阅读4.4k次。下载地址:https://download.csdn.net/download/u012443049/10556049_福州十三水源码下载

毕业设计django旅游管理系统-程序员宅基地

文章浏览阅读744次,点赞19次,收藏16次。经过4个月的努力,在学习了Django编程和数据库,对其有一定了解的情况下,完成了旅游管理系统的设计与实现。本文主要讨论了前台各模块功能设计,工作原理,程序实现等问题。系统基本实现了旅游信息管理与查询、用户注册、评论等功能。同时,系统对用户进行了分级管理,提高了系统的安全性。通过这次毕业设计,让我感受了软件开发的整个过程。

java geoprocessor_Java GeoEvent.getField方法代碼示例-程序员宅基地

文章浏览阅读74次。本文整理匯總了Java中com.esri.ges.core.geoevent.GeoEvent.getField方法的典型用法代碼示例。如果您正苦於以下問題:Java GeoEvent.getField方法的具體用法?Java GeoEvent.getField怎麽用?Java GeoEvent.getField使用的例子?那麽恭喜您, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了..._update eta

Matlab 用矩阵画图-程序员宅基地

文章浏览阅读2.2k次,点赞15次,收藏26次。本文汇总了 Matlab 用矩阵画图的几种方式。