对话框默认是那种土黄色的,我想把一个区域刷成白色,这个区域内没有控件BOOL CDDS_ClientDlg::OnEraseBkgnd(CDC* pDC)
{
CBrush brush;   
CRect rect;
rect.SetRect(330,30,730,350);
brush.CreateSolidBrush(COLORREF RGB(255,255,255));   
pDC->FillRect(rect,&brush);   
return   TRUE;   
}结果启动程序后不想变成白色的地方变成了桌面的颜色,该怎么修改啊?

解决方案 »

  1.   

    因为你没有调用父类的同名函数,导致背景在显示之前没有被刷新(除白色部分以外)
    CBrush brush;的前面加一句CDialog::OnEraseBkgnd
      

  2.   

    这个函数删除,或者返回默认操作,如下:
    BOOL CDDS_ClientDlg::OnEraseBkgnd(CDC* pDC)
    {
    return CDialog::OnEraseBkgnd(pDC); 
    }同时,在void CDDS_ClientDlg::OnPaint() 修改如下:
    void CDDS_ClientDlg::OnPaint() 
    {
    if (IsIconic())
    {
    CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CPaintDC dc(this); // device context for painting
    CBrush brush;   
    CRect rect;
    rect.SetRect(330,30,730,350);
    brush.CreateSolidBrush(COLORREF RGB(255,255,255));  
    dc.FillRect(rect,&brush);  CDialog::OnPaint();
    }
    }