mfc的static的字体及颜色的改变

来源:互联网 发布:钢筋抽料软件 编辑:程序博客网 时间:2024/05/17 21:06

原理是把static取指针,强制转换成CEdit,

CFont * f;  
f = new CFont;  
f->CreateFont(45, // nHeight  
0, // nWidth  
0, // nEscapement  
0, // nOrientation  
FW_NORMAL, // nWeight  
FALSE, // bItalic  
FALSE, // bUnderline  
0, // cStrikeOut  
ANSI_CHARSET, // nCharSet  
OUT_DEFAULT_PRECIS, // nOutPrecision  
CLIP_DEFAULT_PRECIS, // nClipPrecision  
DEFAULT_QUALITY, // nQuality  
DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily  
_T("Arial")); // lpszFac 

*CEdit->SetFont(f);

字体大小就改变了。而后的输出就相应的改变了。一般来说,如果不是特别灵活的场合,就在初始化中定义一次就算了,当然了onsize时候,还要算一下吧。

颜色则如下所述:

1、只要在C...App的函数InitInstance()中添加一行SetDialogBkColor(RGB(255,255,255),RGB(0,0,0));

   就可以设置窗口的背景和里面text的颜色了。

   

2、响应对话框类中的WM_CTLCOLOR消息,在生成的函数OnCtlColor 中,添加你的实现代码:

     如:

    HBRUSH CGroupBoxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

    {

         HBRUSH B = CreateSolidBrush(RGB(255,255,255));

          switch(pWnd->GetDlgCtrlID())
         {
              case(IDC_STATIC1):
                       pDC->SetTextColor(RGB(255,0,192));//设置控件背景颜色
                       pDC->SetBkMode(TRANSPARENT);//设置控件背景为透明
                         return (HBRUSH)B;
                         break;
              case(IDC_EDIT1):
                       pDC->SetTextColor(RGB(255,0,0));
                       pDC->SetBkMode(TRANSPARENT);
                        return (HBRUSH)B;
                         break;
                 case(IDC_CHOICE):
                       pDC->SetTextColor(RGB(255,128,0));
                        pDC->SetBkMode(TRANSPARENT);
                        return (HBRUSH)B;
                         break;
                 case(IDC_RADIO1):
                       pDC->SetTextColor(RGB(255,0,20));
                        pDC->SetBkMode(TRANSPARENT);
                         return (HBRUSH)B;
                       break;
               default:
                       break;
           }

            return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);//若默认的不是所需画笔,则返回另一个画笔

     }

    或(个人感觉下面的方法很有用、也很实用)

     HBRUSH CGroupBoxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

    {

          if ( nCtlColor== CTLCOLOR_EDIT)
            {
                    pDC->SetBkMode(TRANSPARENT);
                   pDC->SetTextColor(RGB(0,250,0));
                  HBRUSH B = CreateSolidBrush(RGB(255,255,255));  
                   return (HBRUSH) B; 
            }
            else if(nCtlColor== CTLCOLOR_STATIC)
            {
                   pDC->SetBkColor(RGB(255,255,255));
                   pDC->SetTextColor(RGB(0,0,255));

             }

             return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

       }

 HBRUSH B = CreateSolidBrush(RGB(255,255,255)); 应当是具有强制性,有一个实例了,看情况上传到psdn看看。
原创粉丝点击