文章类型: VC&C++
关键词: MFC中设置static,text控件的背景色、字体、字号和颜色
内容摘要: MFC中设置static text控件的背景色、字体、字号和颜色

MFC中设置static text控件的背景色、字体、字号和颜色

2016/11/10 17:45:58    来源:apple    阅读:

在实际的应用中,可以用WM_CTLCOLOR 消息改变mfc中控件的颜色,比如现在就来改变一个static text控件的

字体、字体大小、字体颜色和背景色。

例如对话框的类为CTestDlg.

1. 在对话框的类中添加两个变量.

方法:在classview选项卡中,选择CTestDlg,右键,add member variable.

CBrush m_brush;
CFont m_font;

 

在OnInitDialog()函数中添加:

// TODO: ……

m_font.CreatePointFont(150,"华文行楷");//代表15号字体,华文行楷
m_brush.CreateSolidBrush(RGB(0,255,0));//画刷为绿色

 

2 添加WM_CTLCOLOR 消息响应,添加的方法为:

add windows message handler->WM_CTLCOLOR->add and edit

响应WM_CTLCOLOR即可。
2.1.可使用类向导添加OnCtlColor()函数
2.2.可手动添加OnCtlColor()函数
  在.h文件中添加函数声明:
  afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
  在.cpp文件中添加:
BEGIN_MESSAGE_MAP(CDefinedViewDlg, CDialog)  
  ...  
  ON_WM_CTLCOLOR()
  ...
END_MESSAGE_MAP()
 //函数实现
 HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
   HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
   if (pWnd->GetDlgCtrlID()==IDC_E_TEST) //控件ID
      pDC->SetTextColor(RGB(255,0,0)); //设置颜色
   return hbr;
}

 

3 在HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 函数中的todo后添加代码,即:

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

 // TODO: Change any attributes of the DC here
 if (pWnd->GetDlgCtrlID() == IDC_STATICText)
 {

  pDC->SetBkColor(RGB(0,255,0));//背景色为绿色
  pDC->SetTextColor(RGB(255, 0, 0));//文字为红色
  pDC->SelectObject(&m_font);//文字为15号字体,华文行楷
  return m_brush;
 }

 // TODO: Return a different brush if the default is not desired
 return hbr;

}

这样就可以改变static text的背景色、字体、字体大小和字体颜色了。


↑ 上一篇文章:access数据库中使用INNER JOIN连接两个表、三个表、五个表的SQL语句 关键词:INNER,JOIN连接两个表、三个表、五个表的SQL语.. 发布日期:2016/11/8 11:36:26
↓ 下一篇文章:VC中CListCtrl获取当前选中行索引号 关键词:VC中CListCtrl获取当前选中行索引号,MFC 发布日期:2016/11/15 8:34:00
相关目录:.NETVC&C++软件开发
我要评论
正在加载评论信息......