处理WM_ERASEBKGND消息,进行画背景操作

解决方案 »

  1.   

    如何改变视窗的背景颜色
     
    Windows向窗口发送一个WM_ERASEBKGND消息通知该窗口擦除背景,可以使用ClassWizard重载该消息的缺省处理程序来擦除背景(实际是画),并返回TRUE以防止Windows擦除窗口。
    //Paint area that needs to be erased.
    BOOL CSampleView : : OnEraseBkgnd (CDC* pDC)
    {
    // Create a pruple brush.
    CBrush Brush (RGB (128 , 0 , 128) )
    // Select the brush into the device context .
    CBrush* pOldBrush = pDC—>SelcetObject (&brush)
    // Get the area that needs to be erased .
    CRect reClip
    pDC—>GetCilpBox (&rcClip)
    //Paint the area.
    pDC—> PatBlt (rcClip.left , rcClip.top , rcClip.Width ( ) , rcClip.Height( ) , PATCOPY )
    //Unselect brush out of device context .
    pDC—>SelectObject (pOldBrush )
    // Return nonzero to half fruther processing .
    return TRUE

      

  2.   

    重载窗口的PreCreateWindow() 并用下面的代码
    m_hBkBrush =CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
    ::SetClassLong(this->m_hWnd, GCL_HBRBACKGROUND, (LONG)m_hBkBrush);