调用函数CWinApp::SetDialogBkColor可以改变对话框的背景颜色和文本颜色。函数原型如下:void SetDialogBkColor(COLORREF clrCtlBk = RGB(192,192,192),COLORREF clrCtlText = RGB(0,0,0));其中参数clrCtlBk设置对话框的背景颜色,默认为灰色。参数clrCtlText设置对话框的文本颜色,默认为黑色。一般在应用程序类的InitInstance函数中调用SetDialogBkColor函数,设置应用程序中对话框与消息对话框的默认背景颜色和文本颜色。举例如下:BOOL CMyApp::InitInstance()
{
//将对话框背景颜色设置为红色,将文本颜色设置为黄色
SetDialogBkColor(RGB(255,0,0),RGB(255,255,0));
//装入标准的INI文件设置(包括MRU)
LoadStdProfileSettings();
//...
}

解决方案 »

  1.   

    方法多多
    1、在aPP中,InitApp中加入SetDialogBkColor,可以改变该程序的所有对话框的背景色。
    2、在对话框框的ONCtrlColor中,
    HBRUSH xxx::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    //HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    switch(nCtlColor)
    {
    case CTLCOLOR_SCROLLBAR:  //滚动条
    pDC->SetBkColor(BKCOLOR);   //设置滚动的条的背景颜色
    pDC->SetTextColor(BKCOLOR); //设置滚动的条的前景颜色
    return m_brush;
    case CTLCOLOR_STATIC:                //静态文本
    pDC->SetBkColor(BKCOLOR);        //设置静态文本背景色  
    // pDC->SetTextColor(RGB(0, 0, 0)); //设置静态文本前景色  
    return m_brush;
    }

    return m_brush;                      //对话框背景色
    }m_brush在Onintdlg中创建。
      

  2.   

    处理对话框的WM_CTLCOLOR消息,参考下面的代码。(它将对话框的颜色设成绿色)
    HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr;
    if (nCtlColor == CTLCOLOR_DLG) hbr = ::CreateSolidBrush(RGB(0,255,0));
    else hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: Change any attributes of the DC here

    // TODO: Return a different brush if the default is not desired
    return hbr;
    }