MFC中修改静态文本框中文字的字体、颜色
假设有一个静态文本框控件,其ID为:IDC_STATIC_XSDJ,且关联一个control类的CStatic类型的变量m_static_xsdj。
设置字体时自然要用到CFont类,下面介绍两种方法,两种方法都要先在头文件中添加一个变量CFont newFont,切记要声明称类的成员变量,不能是局部变量
方法一:
在OnInitDialog()函数中添加代码:
newFont.CreatePointFont(,L"楷体");
m_static_xsdj.SetFont(&newFont);
至于代码中的参数问题,自己百度或者参考MSDN吧。
这种方法要自己指定字体,但更多的情况是我们希望在原有字体上进行修改,这就是方法二:
思路是:首先获取原有字体,然后获取其对应的LOGFONT结构体,接着修改该LOGFONT结构体,最后利用修改后的结构体,创建一个新的字体。
方法二:
给出代码,依然是写到OnInitDialog 中
CFont* font;
font=m_static_xsdj.GetFont();//获取CFont对象
LOGFONT lf;
font->GetLogFont(&lf);//获取LOGFONT结构体
lf.lfHeight=-; //修改字体大小
lf.lfItalic=TRUE; //倾斜
lf.lfWeight=; //修改字体的粗细
newFont.CreateFontIndirectW(&lf);//创建一个新的字体
m_static_xsdj.SetFont(&newFont);
下面是修改静态文本框控件中文本颜色、文本背景颜色、和控件背景颜色。
首先应当明确的是,在那个函数中下手(写代码),答案是OnCtlColor()函数中,这个函数是用于响应WM_CTLCOLOR消息的,当控件需要重绘时会发出这个消息(姑且这么简单理解吧).
说以下这个函数的函数原型:
HBRUSH CDlgXSDJ::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
三个参数:pDC表示与当前控件相关联的设备上下文,pWnd是当前控件的指针,nCtlColor 表示控件的类型,返回值是一个HBRUSH句柄,该句柄用户重绘控件的背景色。
然后说一下SetTextColor()、SetBkColor()、和SetBkMode()三个函数
SetTextColor()函数很明显是设置文本颜色的,而SetBkColor()函数不是用来设置控件背景颜色的,而是用来设置文本背景颜色的(就是包含文本的矩形)、SetBkMode()是用来设定文字背景模式的,参数只有两个选择OPAQUE、TRANSPARENT表示是否透明。
那么控件的背景颜色怎么设置呢?答案是通过返回的HBRUSH句柄。
下面给出一个代码,和运行效果
HBRUSH CDlgXSDJ::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
if( IDC_STATIC_XSDJ == pWnd->GetDlgCtrlID())//判断发出消息的空间是否是该静态文本框
{
pDC->SetTextColor(RGB(,,));//设置文本颜色为红色
pDC->SetBkMode(OPAQUE);//设置文本背景模式为透明
pDC->SetBkColor(RGB(,,));//设置文本背景为蓝色
hbr=CreateSolidBrush(RGB(,,));//控件的背景色为绿色
}
return hbr;//返回用于重绘控件背景的画刷
}

MFC中修改静态文本框中文字的字体、颜色的更多相关文章
- MFC~~~~~~edit_control 和 静态文本框设置透明和字体设置
一 字体设置比较简单~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 .在 testdlg.h(假设工程名字为test)中 设置一个 public 的 ...
- 改变静态文本框和PictureControl的背景颜色
/************************************************************************/ /* 改变静态文本框和选择框的背景颜色 */ /* ...
- 修改placeholder提示内容的颜色以及文本框输入文字内容的颜色
一般表单文本框提示信息:placeholder=" ",默认颜色是灰色的,输入文本信息也是默认为黑色的,如图所示: 修改placeholder提示内容的颜色关键代码及实现: 实现输 ...
- 如何在C#中获得input文本框中的值
前台 <input type="text" id="txt" name="txtn" style="width:213px& ...
- 第二十七篇 -- 如何给静态文本设置成ico图标形式以及如何修改文本框中的内容
修改静态文本框内容: CWnd* pWnd = GetDlgItem(IDC_STATIC1); pWnd->SetWindowText(_T("Server is on!" ...
- MFC中如何给静态文本框添加消息响应
需要两个步骤: 第一个: 是改变它的ID(默认情况下所有的静态文本框的ID都为IDC_STATIC,你需要改变他的ID为其他的值). 第二个: 是在它的属性对话框中选中Notify选项,VS是将该属性 ...
- C# 设置Word文本框中的文字旋转方向
在Word中可插入文本框,默认情况下插入的文本框中的文字方向为横向排列,对于一些特殊文档的设计要求,需要改变文字方向,如本次测试中的文档排版为考生试卷类型,考生信息栏的内容为下图中的这种, 本文将以C ...
- Java 设置Word文本框中的文字旋转方向
Word文档中可添加文本框,并设置文本框为横向文本排列或是纵向文本排列,或者设置文本框中的文字旋转方向等.通过Java程序代码,也可以实现以上文本框的操作.下面以Java代码示例展示具体的实现步骤.另 ...
- MFC编程入门之二十(常用控件:静态文本框)
上一节讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了.从本节开始将讲解各种常用控件的用法.常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组合框.图片控 ...
随机推荐
- Team Foundation Server 2010下载安装配置方法
一.Team Foundation Server 2010下载: ed2k://|file|cn_visual_studio_team_foundation_server_2010_x86_x64_d ...
- TCP/UDP常见问题小结
1,udp丢包 困扰几天的udp内网传输部分终于做通了,解决的关键就在于setsockopt的调用,设置接收缓冲. 遇到的问题是这样的,主机端发送udp数据包: 应用层的包大小为1452byte大小, ...
- 组合 z
输入a b c d e以及它们对应的数字 比如 a-->1 2 3 b-->2 3 c-->1 d-->3 4 5 e-->1 3 5 输出a b c d e的可用组合 ...
- 自定义View实现图片的绘制、旋转、缩放
1.图片 把一张JPG图片改名为image.jpg,然后拷贝到项目的res-drawable中. 2.activity_main.xml <LinearLayout xmlns:android= ...
- VM虚拟机快照还原效果实现方式
===================================================默认"快照删除"行为:============================ ...
- C# 实现无焦点窗体(转载)
#region 无焦点窗体 [System.Runtime.InteropServices.DllImport("user32.dll")] private extern stat ...
- Visual Basic相关图书推荐
Visual Basic从入门到精通(第2版) 作 者 国家863中部软件孵化器 编 出 版 社 人民邮电出版社 出版时间 2015-03-01 版 次 2 页 数 61 ...
- 150个JS特效脚本
收集了其它一些不太方便归类的JS特效,共150个,供君查阅. 1. simplyScroll simplyScroll这个jQuery插件能够让任意一组元素产生滚动动画效果,可以是自动.手动滚动,水平 ...
- 关于WordPress建站的原理二三事
在写关于仿站文章详情页如何制作之前,我觉得有必要就一些原理性的问题,做一些说明.文章详情页的核心模块和首页有很多相似的地方,比如调用文章的标题.文章的内容.文章分类.作者等,实现起来都差不多,因此,了 ...
- TopFreeTheme精选免费模板【20130617】
今天给大家推荐8款最新的WordPress和Joomla主题,它们绝大部分都是屏幕自适应主题,Mobile相当友好.如果你喜欢它们,就赶快收藏起来吧. Spacing – 来自Themeforest的 ...