大家知道CFormView会嵌入一个Dialog作为他的界面.但Dialog的界面背景是灰色的.我要如何设置CFormView的背景颜色(不是字体的背景颜色).
CFormView是没有OnEraseBkgnd消息函数的.
在Ondraw 和OnPaint中画是否太频繁了?

解决方案 »

  1.   

    怎么会没有OnEraseBkgnd消息函数?
    在类向导最后一个classs info里左下的message filter下拉表里把默认的dialog改为window,然后就可以看到WM_ERASEBKGND消息了
      

  2.   

    To:laiyiling(陌生人●CSDN)
    谢谢,我找到了,但怎么设置背景色?
      

  3.   

    可以通过处理WM_ERASEBKGND消息来改变CView、CFrameWnd或CWnd对象的背景色。
    请看如下的程序段: 
    BOOL C**View::OnEraseBkgnd(CDC* pDC) 

       // 设置所要求背景色的刷子 
       CBrush backBrush(RGB(255, 128, 128)); 
       // 保存旧刷子 
       CBrush* pOldBrush = pDC->SelectObject(&backBrush); 
       CRect rect; 
       pDC->GetClipBox(&rect);   // 擦除所需的区域 
       pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY); 
       pDC->SelectObject(pOldBrush); 
       return TRUE; 
    }
      

  4.   

    或者响应WM_CTLCOLORDLG消息,返回背景画刷。
      

  5.   

    基本解决,在WM_CTLCOLORDLG消息中选刷子最好,不用自己重画.
    不过我想其他方法也应该有效,只不过我没弄好.
    谢谢各位.