求助:如何在对话框刚开始显示,把Static控件的背景色由灰变成白色,
也就是说,在对话框显示时,其Static的控件已经是白色的了,这个问题困扰我了一段时间,望高手给予解答

解决方案 »

  1.   

    先是设置颜色,并在cdialog的onpaint中执行对cstatic控件绘制颜色即可。
    相关代码如下。。OnPaint()
    {
    //
    CWnd* pwnd = GetDlgItem(IDC_STCBKCOL);
    PaintBlock(pwnd,m_colTxtBkCol,FALSE);
    }void PaintBlock(CWnd * wnd,COLORREF color,BOOL bInvalid)
    {
    if(bInvalid)
    {
    wnd->InvalidateRect(NULL);
    wnd->UpdateWindow();
    }
    PaintWndBlock(wnd,color);
    }
      

  2.   

    //刚才漏了一个函数,现在补上
    void PaintWndBlock(CWnd * wnd,COLORREF color)
    {
    CRect rect;
    CPen  pen;
    CBrush brush;
    CClientDC dc(wnd); wnd->GetClientRect(&rect);
    brush.CreateSolidBrush(color);
    pen.CreatePen(PS_SOLID,0,RGB(0,0,0));
    CPen *oldpen = dc.SelectObject(&pen);
    CBrush * oldbrush = dc.SelectObject(&brush);
    dc.Rectangle(&rect);
    dc.SelectObject(oldpen);
    dc.SelectObject(oldbrush); if (!pen.DeleteObject())
    {
    TRACE("删除笔失败!");
    }
    if (!brush.DeleteObject())
    {
    TRACE("删除刷失败!");
    }}
      

  3.   

    另外,CDialog::OnPaint();不能没有,否则对话框上的控件,在下次显示时都没有了