我在InitInstance()使用SetDialogBkColor(RGB(10,10,10),RGB(13,10,10))修改MFC对话框的背景颜色,为什么不成功?

解决方案 »

  1.   

    增加WM_CTLCOLOR消息,在消息响应函数里面修改颜色
      

  2.   

    xiangrujian(还不结帖)??/???
    能否讲得详细点呢?
    在哪个响应函数里增加消息?
      

  3.   

    http://sanjianxia.diy.myrice.com/vc/vc37.htm
      

  4.   

    或者
    BOOL CColorApp::InitInstance()
    {.........CColorDlg dlg;
    m_pMainWnd = &dlg;
    SetDialogBkColor(RGB(200,100,100),RGB(100,100,200));    //具体的颜色值自己去设置 int nResponse = dlg.DoModal();.......}
    注意位置
      

  5.   

    如何影射CTLCOLOR_DLG 对话框消息?
      

  6.   

    我已经按照以下办法,但还是改变不了,是不是我乱设置对话框的什么属性了?
    或者
    BOOL CColorApp::InitInstance()
    {.........CColorDlg dlg;
    m_pMainWnd = &dlg;
    SetDialogBkColor(RGB(200,100,100),RGB(100,100,200));    //具体的颜色值自己去设置 int nResponse = dlg.DoModal();.......}
    注意位置
      

  7.   

    重载WM_CTLCOLOR消息
    HBRUSH CSenMSGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    if(pWnd==this)
     return CreateSolidBrush(RGB(0,0,0));
      return hbr;
    }
      

  8.   

    到C**App类的InitInstance函数中:   
        
      CTestDlg   dlg;   
      m_pMainWnd  =  &dlg;   
      SetDialogBkColor(RGB(255,0,0));//在这个位置添加这一句   
        
      int   nResponse   =   dlg.DoModal();
      

  9.   

    SetDialogBkColor(RGB(255,0,0),RGB(0,255,0));把这句代码加到CYourApp类的InitInstance函数的末尾,即return TRUE;之前就可以了的
      

  10.   

    重载WM_CTLCOLOR消息接分。分不在多
      

  11.   

    重载对话框的WM_ERASEBKGND消息不就完了嘛!
      

  12.   

    结解这个问题的方法:
    1.声明一个全局变量CBrush m_bgBr;
    2.在对话框的构造函数中
    XXXDialog::XXXDialog()
    {
        m_bgBr.CreateSolidBrush(RGB(0,0,0));//把这个值设置你需要的背景色的值
    }
    3.生成处理WM_CTLCOLOR的函数
    4.在函数
    HBRUSH CSenMSGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    if(pWnd==this)
     return m_bgBr;return hbr;
    }第二种方法:
    1.生成处理WM_ERASEBKGND消息的事件
    2.在OnEraseBkGnd函数中:
    CDC *pDC;
    pDC=GetDC();
    CRect WndRc;
    GetWindowRect(&WndRc);
    CBrush BgBr;
    BgBr.CreateSolidBrush(RGB(0,0,0));//生成你需要的颜色
    pDC->SelectObject(&BgBr);
    pDC->FillRect(&WndRc);Return TRUE;