VC改变窗口和控件的背景颜色-小结

在这里总结一下VC中改变窗口和控件背景颜色的方法。

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);

       }

     注:

     CTLCOLOR_DLG 对话框

   CTLCOLOR_EDIT 编辑框

   CTLCOLOR_LISTBOX 列表框

    CTLCOLOR_MSGBOX 消息框

    CTLCOLOR_SCROLLBAR 滑动条

    CTLCOLOR_STATIC 静态文本框、矩形等。

 

3、除了上述方法外还可以使用SetClassLong,这个函数可以实现动态改变的效果。

 

4、如果想改变按钮的背景和效果,就得另写实现的代码了,网上你可以找到一个别人写的CButtonST类,

    可以下下来学一下,那可以将按钮做得很好看,在以下两个地址可以下载到

     http://www.vckbase.com/code/viewcode.asp?id=1556

     http://www.vckbase.com/code/viewcode.asp?id=1750

 

 

 

转自:http://hi.baidu.com/wp_sky_city/blog/item/852dc1ed0b079334279791ce.html

你可能感兴趣的:(VC改变窗口和控件的背景颜色-小结)