MFC静态文本框设置字体和颜色

时间:2024-02-25 14:29:15

在MFC中,static text控件可以很方便的显示文字,但是如果想修改字体风格大小以及颜色,应该怎么修改呢?

1.要修改字体,需要用到CFont类,这个类可以修改字体的各种属性

1 CFont m_font;
2 m_font.CreateFont(14,0,0,0,FW_BOLD,FALSE,FALSE,FALSE,
3                    ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
4                    DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS,_T("宋体"));//宽度为14、粗体的宋体字符

2.重载WM_CTLCOLOR消息的响应函数,框架在将要绘制子控件时调用此函数,我们可以在这个消息的响应函数里添加代码来绘制我们的控件

1  if (pWnd->GetDlgCtrlID() == IDC_STATIC)
2  { 
3       pDC->SelectObject(&m_font);//选择字体
4  }

 

3.修改颜色,也是在OnCtlColor函数中

1 if (pWnd->GetDlgCtrlID() == IDC_STATIC)
2 {
3     pDC->SetTextColor(RGB(255, 0, 0));//用RGB宏改变颜色   
4 }

4.最终代码

 1 HBRUSH CXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
 2 {
 3     HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
 4       
 5       // TODO:  在此更改 DC 的任何特性
 6       if (pWnd->GetDlgCtrlID() == IDC_STATIC)
 7       { 
 8             pDC->SetTextColor(RGB(255, 0, 0));//用RGB宏改变颜色 
 9             pDC->SelectObject(&m_font);
10       }
11      // TODO:  如果默认的不是所需画笔,则返回另一个画笔1     
12     return hbr;    
13 }     

5.效果图