在类的构造函数中将刷子初始化为所需要的背景颜色。
CMyFormView : : CMyFormView ( )
{
 m_brush .CreateSolidBrush (RGB ( 0, 0, 255) )
}
处理WM_CTLCOLOR消息并返回一个用来绘画对话背景的刷子句柄。
由于当重画对话控件时也要调用该函数,所以要检测nCtlColor参量。
HBRUSH CMyFormView : : OnCtlColor (CDC* pDC , CWnd*pWnd , UINT nCtlColor)
{
 if (nCtlColor = = CTLCOLOR _ DLG )
 return (HBRUSH) m_brush.GetSafeHandle ( )
 return CFormView : : OnCtlColor (pDC, pWnd , nCtlColor)
}
 

解决方案 »

  1.   

    向窗口发送一个WM_ERASEBKGND消息通知该窗口擦除背景,可以使用ClassWizard重载该消息的缺省处理程序来擦除背景(实际是画),并返回TRUE以防止Windows擦除窗口。
    BOOL CSampleView : : OnEraseBkgnd (CDC* pDC)
    {
    CBrush Brush (RGB (128 , 0 , 128) )
    CBrush* pOldBrush = pDC—>SelcetObject (&brush)
    CRect reClip
    pDC—>GetCilpBox (&rcClip)
    pDC—> PatBlt (rcClip.left , rcClip.top , rcClip.Width ( ) , rcClip.Height( ) , PATCOPY )
    pDC—>SelectObject (pOldBrush )
    return TRUE
    }
      

  2.   

    好象自己不能改,只能从系统中设置:桌面->属性->外观->项目,程序背景颜色。即可改变了。
      

  3.   

    回复Phourm:
          非也,我见过的,但不是通过改变显示属性。