静态文本框
静态 文本框
2023-09-11 14:21:07 时间
MFC提供了CStatic类,封装了对静态文本框的所有操作
mfc怎么修改静态文本控件文字颜色
在生成的类中添加重载的虚函数OnCtlColor(CDC
*pDC,CWnd *pWnd,UINT nCtlColor)。
可以在该函数中设置pDC->SetBkMode(TRANSPARENT);将文本的背景设置为透明。
可以在该函数中设置pDC->SetTextColor(RGB(255,0,0));将文本的颜色设置为红色。
也可以指定某一静态文本的字体颜色,可以加如下判断:
switch(pWnd->GetDlgCtrlID())
{
case IDC_INFO:
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(255,0,0));
}
这个判断,可以仅仅将ID号为IDC_INFO的静态文本的字体颜色设置为红色。
另一博主的笔记,借此用用
方法一:
在OnInitDialog()函数中添加代码:
1 newFont.CreatePointFont(160,L"楷体"); 2 m_static_xsdj.SetFont(&newFont);
这种方法要自己指定字体,但更多的情况是我们希望在原有字体上进行修改,这就是方法二:
思路是:首先获取原有字体,然后获取其对应的LOGFONT结构体,接着修改该LOGFONT结构体,最后利用修改后的结构体,创建一个新的字体。
方法二:
给出代码,依然是写到OnInitDialog 中
CFont* font; font=m_static_xsdj.GetFont();//获取CFont对象 LOGFONT lf; font->GetLogFont(&lf);//获取LOGFONT结构体 lf.lfHeight=-26; //修改字体大小 lf.lfItalic=TRUE; //倾斜 lf.lfWeight=400; //修改字体的粗细 newFont.CreateFontIndirectW(&lf);//创建一个新的字体 m_static_xsdj.SetFont(&newFont);
下面是修改静态文本框控件中文本颜色、文本背景颜色、和控件背景颜色。
首先应当明确的是,在那个函数中下手(写代码),答案是OnCtlColor()函数中,这个函数是用于响应WM_CTLCOLOR消息的,当控件需要重绘时会发出这个消息(姑且这么简单理解吧).
说以下这个函数的函数原型:
1 HBRUSH CDlgXSDJ::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 2 { 3 HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); 4 return hbr; 5 }
三个参数:pDC表示与当前控件相关联的设备上下文,pWnd是当前控件的指针,nCtlColor 表示控件的类型,返回值是一个HBRUSH句柄,该句柄用户重绘控件的背景色。
然后说一下SetTextColor()、SetBkColor()、和SetBkMode()三个函数
SetTextColor()函数很明显是设置文本颜色的,而SetBkColor()函数不是用来设置控件背景颜色的,而是用来设置文本背景颜色的(就是包含文本的矩形)、SetBkMode()是用来设定文字背景模式的,参数只有两个选择OPAQUE、TRANSPARENT表示是否透明。
那么控件的背景颜色怎么设置呢?答案是通过返回的HBRUSH句柄。
下面给出一个代码,和运行效果
1 HBRUSH CDlgXSDJ::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 2 { 3 HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); 4 if( IDC_STATIC_XSDJ == pWnd->GetDlgCtrlID())//判断发出消息的空间是否是该静态文本框 5 { 6 pDC->SetTextColor(RGB(255,0,0));//设置文本颜色为红色 7 pDC->SetBkMode(OPAQUE);//设置文本背景模式为透明 8 pDC->SetBkColor(RGB(0,0,255));//设置文本背景为蓝色 9 hbr=CreateSolidBrush(RGB(0,255,0));//控件的背景色为绿色 10 } 11 return hbr;//返回用于重绘控件背景的画刷 12 }
。。。。。。。。。。。。。。。结束。。。。。。。。。。。。。。。。
相关文章
- nginx静态资源配置
- 静态资源缓存控制grunt插件
- 【C/C++学院】0725-内存补码分析/补码原码实战/打印整数二进制数据/静态库说明
- asp .net core 静态文件资源
- SpringMVC处理静态文件源码分析
- 使用七牛实现静态页面的上传
- Docker详解(十五)——Docker静态IP地址配置
- [Apache] 网站页面静态化与Apache调优(图)
- C++ 在函数中使用静态局部变量,让函数返回数组
- Python Flask框架学习30:redis操作/配置静态文件路径
- 前后端分离 导致的 静态页面 加载 <script type="module" > 报CORS 跨域错误,提示 blocked by CORS policy
- 关于静态与动态编译arm平台程序的比較
- 在Android中通过导入静态数据库来提高应用第一次的启动速度
- C++中全局变量、函数与静态变量、函数的区别
- Log4j漏洞对静态代码测试工具Helix QAC的影响:
- 【CMake】第3篇 CMake构建静态库与动态库