MFC静态文本控件如何设置字体--大小和颜色及背景色

方法一:通过构建相应字体

CFont font;
font.CreateFont(10,10,0,0,FW_BLACK,FALSE,FALSE,
              FALSE,GB2312_CHARSET,OUT_DEFAULT_PRECIS,
              CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
              FIXED_PITCH|FF_MODERN, _T("华文楷体"));
              m_stc.SetFont(&font);
              m_stc.SetWindowText(_T("Hello World"));
font.DeleteObject();
 


方法二:通过静态文本控件ID

if(pWnd->GetDlgCtrlID() == IDC_STATIC_TEST)

{  //IDC_STATIC_TEST是控件的ID

   pDC->SetTextColor(RGB(128,128,256));//RGB宏改变颜色  

}


具体实现方式

1.在对话框的类中加入成员:
CBrush
 m_brush;
COLORREF
 m_color;
2.
OnInitDialog()中,加入
m_brush.CreateSolidBrush(RGB(255,255,255));
//
此处设置的RGB值可以改变控件的背景色。
m_color=RGB(0,0,0)
//
此处设置控件的文字初始颜色。

3.重载WM_CTLCOLOR消息的响应函数.此函数的原型:
    afx_msg HBRUSH OnCtlColor(CDC *pDC,CWnd*pWnd,UINT nCtlColor);

参数nCtlColor用于指定控件的类型,可以是:
                    .CTLCOLOR_BTN                             按钮
                    .CTLCOLOR_DLG                              对话框
                    .CTLCOLOR_EDIT                            编辑框
                    .CTLCOLOR_LISTBOX                       列表控件
                    .CTLCOLOR_MSGBOX                       消息控件
                    .CTLCOLOR_SCROLLBAR         滚动条
                    .CTLCOLOR_STATIC                         静态控件


如果要指定某个特定控件可以这样写:ID IDC_STATIC1
if (pWnd-> GetDlgCtrlID()==IDC_STATIC1)
{
    pDC-> SetTextColor(RGB(255,0,0));      //设置字体颜色
    pDC-> SetBkMode(TRANSPARENT);         //设置字体背景为透明
    return(HBRUSH)::GetStockObject(BLACK_BRUSH);     // 设置背景色

} 

BLACK_BRUSH:黑色
WHITE_BRUSH:
白色
GRAY_BRUSH:
灰色
NULL_BRUSH:
透明
HOLLOW_BRUSH
:透明
[
举例1]
 为对话框设置背景颜色
1. CBrush m_Brush;
2. m_Brush.CreateSolidBrush(RGB(255,0,0));
3. HBRUSH CTest123Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    if (nCtlColor == CTLCOLOR_DLG )
     return (HBRUSH)m_Brush.GetSafeHandle();
    returnCDialog::OnCtlColor(pDC,pWnd,nCtlColor);
}
[
举例2]为对话框设置背景图片
1. CBrush m_Brush;
2. CBitmap* pBitmap = new CBitmap;
    ASSERT(pBitmap);
    pBitmap->LoadBitmap(IDB_BACKGROUD);
   m_Brush.CreatePatternBrush(pBitmap);
3. HBRUSH CTest123Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
 {
     if (nCtlColor == CTLCOLOR_DLG )
           return (HBRUSH)m_Brush.GetSafeHandle();
    returnCDialog::OnCtlColor(pDC,pWnd,nCtlColor);
 }
[
举例3]
HBRUSH CColorEditBoxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
 HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDC_EDIT1)
        //第一个编辑框
{
    pDC->SetBkColor(m_redcolor);     //输入文本的的底色
     pDC->SetTextColor(m_textcolor); //输入文本的颜色
     hbr = (HBRUSH) m_redbrush;         // 编辑框控件的填充色
}
if (pWnd->GetDlgCtrlID() == IDC_EDIT2)//
第二个编辑框
{
    pDC->SetBkColor(m_bluecolor);      // 输入文本的的底色
     pDC->SetTextColor(m_textcolor);   // 输入文本的颜色

     hbr = (HBRUSH) m_bluebrush;        //编辑框控件的填充色

}
return hbr;


对对话框:

{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    if (nCtlColor == CTLCOLOR_STATIC)
    {    pDC-> SetTextColor(RGB(255,0,0));     //字体颜色
          pDC-> SetBkColor(RGB(0, 0, 255));       //字体背景色  
     }
    return hbr;
}

 4.需要改变颜色时
m_color=RGB(128,0,255);//
此处改变字体的颜色
CStatic*
 m_pStatic1=(CStatic*)GetDlgItem(IDC_STATIC1);
m_pStatic1->RedrawWindow();


你可能感兴趣的:(MFC)