在消息WM_CTRCOLOR响应函数中
返回一个自定义的画刷 来绘制对话框 大家都知道这个画刷会把对话框上的所有控件给绘制了(除开按钮。)我这个对话框上面有编辑框 staric文本框 一个按钮
所以编辑框 staric文本框 还有对话框都会是同一个颜色
现在 我的问题是 只想让控件以外的对话框区域绘制 这个怎么来实现啊
在线等待

解决方案 »

  1.   

    这个消息只能控制窗口上控件的颜色吧,控件以外的要在OnDraw或者OnPaint里面画
      

  2.   


    HBRUSH Ccsdn_mfcDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO:  Change any attributes of the DC here
    // TODO:  Return a different brush if the default is not desired
            if(nCtlColor == CTLCOLOR_DLG)
    {
    return yourbrush;  //设置你的画刷
    }
    return hbr;
    }
      

  3.   

    添加WM_ERASEBKGND消息,然后添加下面代码
    BOOL CMyDlg::OnEraseBkgnd(CDC* pDC) 
    {
    // TODO: Add your message handler code here and/or call default
    CRect rect;
    GetClientRect(&rect);
    pDC->FillRect(rect,&m_brush);
    return true;
    }