WTL环境中CEdit或Cstatic控件中修改字体大小和颜色

      本文主要介绍只读模式的下的CEdit控件和CStatic控件的字体的大小和颜色的修改,编辑模式下的CEdit控件的原理是一样的只是消息变了。

      1. 修改字体颜色

        只读模式下的CEdit控件和CSataic控件通过发送WM_CTLCOLORSTATIC给主窗口来进行重绘,这时主窗口可以在重绘前设定字体颜色(编辑模式的Cedit通过WM_CTLCOLOREDIT )。具体实现如下:

        1.1  在主窗口的消息循环中添加如下代码(红色部分):

                 BEGIN_MSG_MAP(CMainDlg)
                            .......
                       MESSAGE_HANDLER(WM_CTLCOLORSTATIC,OnEditColor)
                 END_MSG_MAP()
        1.2   然后添加OnEditColor方法:

                LRESULT CMainDlg::OnEditColor(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
                 {
                          HBRUSH hbr;
                       HDC  hdc =(HDC) wParam;
                     HWND  hwnd = (HWND) lParam;

 

                      //获得当前控件的画刷,因为改变字体颜色后,需要返回自身的画刷才能生效
                    hbr= (HBRUSH) GetCurrentObject(hdc,OBJ_BRUSH);
             
                     if(hwnd == m_fr_status.m_hWnd) //判断是否需要修改的控件
                     {//如果是,修改字体颜色
                             SetTextColor(hdc,m_fr_cl);
                             SetBkMode(hdc,TRANSPARENT);
                        }else
                       {//如果不是,返回主窗口默认画刷。
                                hbr= (HBRUSH) GetCurrentObject(NULL,OBJ_BRUSH);
                        }
                         return (LRESULT)hbr;
                }
   2.    修改字体
         在主窗口类里添加一个CFont类的成员函数,因为我们修改后的字体需要保存起来,如果定义为局部变量,在设置完成后,函数返回后,字体就会失效。
                 class CMainDlg : public CDialogImpl
                {
                  private:

                             ......
                            CFont  m_font;

                           CEdit   m_fr_sn;

                            ......
                 }

 

在OnInitDialog方法中添加如下红色代码,设置字体:
                     ......
               m_fr_sn = (CEdit)GetDlgItem(IDC_EDIT_FR_SN);  
              m_font.Attach(m_fo_sn.GetFont());  
              m_font.CreatePointFont(220,_T("微软雅黑"));

               m_fr_sn.SetFont(m_font.m_hFont);
                 .......

你可能感兴趣的:(WTL环境中CEdit或Cstatic控件中修改字体大小和颜色)