通过OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)返回画刷return Mybrush修改不了对话框背景颜色;HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if(nCtlColor == CTLCOLOR_BTN)
  {
HBRUSH hbr = CDiaDlg::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
  } return MyBrush;
}打了断点调试,发现程序根本没运行到return MyBrush这一步,为什么?有没其它修改对话框默认背景颜色的方法?我在OnEraseBkgnd里面有修改对话框背景颜色(黑色),但是对话框在某些情况下还是显示为白色。

解决方案 »

  1.   

    OnEraseBkgnd里直接return TRUE;在OnPaint里绘制你的背景即可。
      

  2.   

    The framework calls this member function when a child control is about to be drawn.应该是更改子控件的!?
      

  3.   

    CTLCOLOR_BTN不是修改按钮的吗? 
    CTLCOLOR_DLG 才是对话框
      

  4.   


    你话对话框的背景色用这个 方法好像多次一举!直接onpaint 和onerasebkground就可以了!
      

  5.   

    onerasebkground中返回true
    onpaint中fillsolidrect
      

  6.   

    我的描述可能有问题,我是在onpaint和onerasebkgnd里面处理了,一般情况下对话框的背景色是可以改变的。就是在一些情况下(这个不好描述),对话框的背景色又会变回白色,需要手动再重新刷新才可以。