各位兄弟姐妹,请指教?

解决方案 »

  1.   

    定义一成员变量CBrush m_brush;OnInitDialog()中进行初始化工作m_brush.CreateSolidBrush(RGB(255,0,0));然后在OnCtrlColor中HBRUSH CXXXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
     HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
     if(nCtlColor==CTLCOLOR_EDIT &&                           pWnd->GetDlgCtrlID()==IDC_EDIT1)//注意此处的(pWnd->),否则没效果
     {
      pDC->SetTextColor(RGB(255,0,0));
      pDC->SetBkColor(RGB(255,255,0));//设置文本背景色
      pDC->SetBkMode(TRANSPARENT);//设置背景透明
      hbr = (HBRUSH)m_brush;
     }  return hbr;
    }对于nCtlColor的类型,如下: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 
    CTLCOLOR_STATIC   Static control
      

  2.   

    在WM_CTLCOLOR中设置控件的颜色,用dc画。Dialog的可以添加WM_ERASEBKGND来实现。
      

  3.   

    楼上的,我在程序中添加了OnCtlColor消息函数,如下:
    HBRUSH CDlgAlarmList::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here
    if ( nCtlColor==CTLCOLOR_BTN && pWnd->GetDlgCtrlID()==IDC_BUTTON_SAVE )
    {
    pDC->SetTextColor( RGB(255, 255, 255) );
    pDC->SetBkColor( RGB(255, 255, 0) );
    pDC->SetBkMode( TRANSPARENT );
    hbr = (HBRUSH)m_clBrush;
    }
    // TODO: Return a different brush if the default is not desired
    return hbr;
    }但是我程序运行的时候,颜色没有改变。
    我在这个函数中设置断点,debug的时候,画面显示的时候,并没有进入这个函数执行。我是在一个MFC的DLL里面添加一个Dialog,并在这个Dialog上面添加了很多控件。
    我想改变Dialog的底色和控件的颜色。请问是怎么回事啊?
      

  4.   

    不知楼主啥控件,
    不同的控件要用不同的参数,
    如CTLCOLOR_EDIT CTLCOLOR_DLG等
      

  5.   

    http://blog.csdn.net/miaoshengwu/archive/2007/11/14/1884000.aspxhttp://blog.csdn.net/miaoshengwu/archive/2007/06/04/1637618.aspx希望LS可以得到想要的效果