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

if (pWnd->GetDlgCtrlID()==IDC_BUTTON1)
{
  pDC->SetBkMode(1);
  pDC->SetBkColor(RGB(255,244,209));
                 pDC->SetTextColor(RGB(0,0,255));
  
}
if(pWnd->GetDlgCtrlID()==IDC_STATIC1)
pDC->SetTextColor(RGB(0,0,255));
// TODO: Return a different brush if the default is not desired
return hbr;
}
IDC_STATIC1的颜色改变了
IDC_BUTTON1的颜色这没改变,我设置断点程序运行里面去了?这么会这样呢?

解决方案 »

  1.   

    if( nCtlColor == CTLCOLOR_BTN )
    {
    if (pWnd->GetDlgCtrlID()==IDC_BUTTON1)
    {
    ...
    }
    }
      

  2.   

    if(  nCtlColor  ==  CTLCOLOR_BTN  )  

    if (pWnd->GetDlgCtrlID()==IDC_BUTTON1)
    {
      pDC->SetBkMode(1);
      pDC->SetBkColor(RGB(0,0,255));
              pDC->SetTextColor(RGB(0,0,255));
    }
      

    }
    IDC_BUTTON1控件还是为灰色啊!
      

  3.   

    这个可能不行,也许按钮控件的颜色在它自己的类里面改变你可以自己建一下类继承CButton吧。
      

  4.   

    如果是在VB中改变控件的颜色是非常轻松的事,在VC中确实有点困难.
    这样吧,在OnDraw()中找个刷子刷刷看:)
      

  5.   

    CTLCOLOR_BTN   Button control
    CTLCOLOR_DLG   Dialog box
    CTLCOLOR_EDIT   Edit control
    CTLCOLOR_LISTBOX   List-box control
    CTLCOLOR_MSGBOX   Message box
    CTLCOLOR_SCROLLBAR   Scroll-bar control要改button的颜色要把它的属性定为owerdraw  
    然后用这个函数或者是OnDrawItem函数另外自己派生一个CButton的子类也可以
    CTLCOLOR_STATIC   Static control
      

  6.   

    我想button控件背景颜色改变,字体颜色也改变啊!
      

  7.   

    DrawItem里面一切搞定,看看帮助就可以搞定了,有现成的代码