C++对话框背景色的设置方法

时间:2008-10-04 16:03:00   来源:无忧考网     [字体: ]
一个基于对话框的MFC AppWizard应用程序中,如何改变对话框的背景颜色呢?对于这个问题,其实可以 由几种不同的方法来实现,具体如下(粗斜体代码为增添的):
  ---- 方法一:调用CWinApp类的成员函数SetDialogBkColor来实现。
  ---- 其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色。下面的例子是将应用程序对话 框设置为蓝色背景和红色文本,步骤如下:
  ---- ① 新建一个基于Dialog的MFC AppWizard应用程序ExampleDlg。
  ---- ② 在CExampleDlgApp ::InitInstance()中添加如下代码:
  BOOL CExampleDlgApp: : InitInstance ( )
  {
  …
   CExampleDlgDlg dlg;
   m_pMainWnd = &dlg;
  //先于DoModal()调用,将对话框设置为蓝色背景、红色文本
   SetDialogBkColor(RGB(0,0,255),RGB(255,0,0));
   int nResponse = dlg.DoModal();
  …
  }
  ---- 编译并运行,此时对话框的背景色和文本色已发生了改变。值得注意的是:在调用DoModal()之前必须 先调用SetDialogBkColor,且此方法是将改变应用程序中所有的对话框颜色,并不能针对某一个指定的对 话框。
  ---- 方法二:重载OnPaint(),即WM_PAINT消息。有关代码如下(以上例工程为准):
  void CExampleDlgDlg::OnPaint()
  {
   if (IsIconic())
  …
   else
   {
    CRect rect;
    CPaintDC dc(this);
    GetClientRect(rect);
    dc.FillSolidRect(rect,RGB(0,255,0)); //设置为绿色背景
    CDialog::OnPaint();
   }