在VC中如何设置对话框的背景颜色?

解决方案 »

  1.   

    重载WM_ERASEBKGND消息函数,然后利用它的参数pDC进行设置即可。
      

  2.   

    比较常用的三种方法
    1
    在对话框调用DOModal()函数前调用SetDialogBkColor()
    这个函数的原型是void SetDialogBkColor(COLORREF clrCtlBk=RGB(192,192,192),COLORREF clrCtlText=RGB(0,0,0),他只有两个参数:
    只要设置参数cltCtlBk旧可以改变背景色了2重载OnCtlColor(CDC* pDC,CWnd* pWnd,UNIT nCtlColor)函数,即对WM_CTLCOLOR消息的处理此函数回返回一个画刷句柄,所以只要返回一个其他颜色的画刷句柄就可以改变对话矿的颜色了3重载OnPaint()即对WN_PAINT 消息的处理
      

  3.   

    一.设置对话背景:
    如果你想用1位图作为对话背景,提供下面方法:
    重载 OnPaint 函数,对话框的 OnPaint 默认有两个处理,在第二个中加入这些代码: 
    if (IsIconic()) 

    ... 
    ... 

    else 

    // 开始画背景 
    CPaintDC dc( this ); 
    CDC back; 
    CBitmap bmp; bmp.LoadBitmap( IDB_BITMAP1 ); // 建立背景图片 
    back.CreateCompatibleDC( &dc ); // 建立一个图形缓冲并载入背景图 
    back.SelectObject( &bmp ); dc.BitBlt( 0, 0, 100, 100, &back, 0, 0, SRCCOPY ); // 画在对话框中,可以把 100, 100 改成具体的对话框大小 bmp.DeleteObject(); 
    CDialog::OnPaint(); 
    } 二:设置控件背景:
    1 设置CStatic控件背景:
    (1).从CStatic派生一个类CMyStatic;
    (2).添加成员变量CBrush m_Brush;
    (3).
    CMyStatic::CMyStatic()
    {
    m_Brush.CreateSolidBrush(RGB(197,200,208));
    }
    (4)响应=WM_CTLCOLOR消息:
    HBRUSH CMyStatic::CtlColor(CDC* pDC, UINT nCtlColor) 
    {
    // TODO: Change any attributes of the DC here pDC->SetTextColor(RGB(0,0,0));
    pDC->SetBkMode(TRANSPARENT);  // TODO: Return a non-NULL brush if the parent's handler should not be called
    return (HBRUSH)m_Brush;
    }
    其它控件和它类似。