什么意思?自动是什么意思?如果不用对话框的颜色的话,一般都是在DrawItem中用FillRect画出你的底色:)

解决方案 »

  1.   


    你在对话框的OnCtlColor中处理就行了。下面是具体的过程。
    1、在对话框中定义一个私有变量CBrush brush;
    2、在对话框的构造函数中加入
        brush.CreateSolidBrush(RGB(255, 0, 0));
    3、在对话框的OnCtlColor中做如下处理    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);    // TODO: Change any attributes of the DC here
        if  (nCtlColor == CTLCOLOR_BTN )
            if (pWnd = this->GetDlgItem(IDC_BUTTON))
                return (HBRUSH)brush;

        // TODO: Return a different brush if the default is not desired
        return hbr;
    然后一切就OK了,其中IDC_BUTTON是一个按钮的ID。记得将Button的Owner Drawer style选上。
      

  2.   

    我的意思是在程序的其他地方设置了一些参量,这些参量的值会更新
    我需要在这些参量更新的时候根据这些参量的值改变按钮的颜色。
    我的程序在发现这些参量改变的时候会发送一条WM_PAINT消息给这个按钮,但这个按钮的颜色不会自动改变,要怎么办呢?
      

  3.   

    从CButton派生一个类,重载DrawItem方法
      

  4.   

    在OnDrawItem()中处理,每次用pbutton->Invalidate()通知重绘。