VC里的对话框程序怎么设置背景色?

解决方案 »

  1.   

    BOOL CSampleDlg::OnEraseBkgnd(CDC* pDC) 
    { //设置brush为希望的背景颜色
    CBrush backBrush(RGB(255, 128, 128)); //保存旧的brush 
    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;} 
      

  2.   

    OnEraseBkgnd,是一个Windows的消息,你需要把你消息过滤的种类改为Windows,
    从类向导最后一个标签页,改Message filter为Windows,返回消息映射标签页你就会发现WM_ERASEBKGND消息。
    改变对话框背景有多种方法,你还可以在APP类中调用SetDialogBkColor(...,...),前一参数设背景,后一参数设文本颜色。也可以通过WM_CTLCOLOR,返回不同画刷来改变背景。
      

  3.   

    也可以这样做:
    在对话框类里加入成员:CBrush m_brBrush;
    然后在构造函数里对其进行初始化:
     m_brBrush.CreateSolidBrush(RGB(255,255,0));
    响应WM_CTRLCOLOR消息,在函数中加入下面的语句:
    if(nCtlColor==CTLCOLOR_DLG)
    {
        return (HBRUSH)m_brBrush.GetSafeHandle();
    }
    就万事OK啦!
      

  4.   

    其实在InitInstance()
    中调用SetDialogBkColor();就可以拉
      

  5.   

    啊?这么复杂啊?直接用SetDialogBkColor不行吗?
      

  6.   

    呵呵,同意ukyoking的办法。适合我这样的。:)
      

  7.   

    又是一个不眠夜,CSDN要戒严了。记得葛优(演的一个人物)曾经说过:“……什么人都可以惹,唯独小人不能沾。”初春的一场小雪,纷纷扬扬地下着,掩饰了大地,掩盖了一切人间的罪恶。上帝说:“有阳光就有黑暗,有善举就有罪过。饶恕他吧。”