CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  界面

请问设置特定对话框背景颜色怎么设置?

楼主fashionzhou(自由港)2005-08-03 23:11:30 在 VC/MFC / 界面 提问

哪位告诉我? 问题点数:20、回复次数:6Top

1 楼hanyufeng(寒雨丰)回复于 2005-08-04 03:17:04 得分 0

定义一个自己的画刷  
  然后在响应WM_CTLCOLOR的函数中,返回自己的画刷就可以了啊Top

2 楼alon21(Alon.飘一族)回复于 2005-08-04 08:38:50 得分 0

//改变对话框的背景颜色  
  方法一:  
  修改对话框的OnPaint,在else中添加如下代码  
          CPaintDC   dc(this);  
          CRect   rect;    
          GetClientRect(rect);    
          dc.FillSolidRect(rect,   RGB(0,0,0));    
          CDialog::OnPaint();  
   
   
  方法二:  
  在对话框的应用类(App)的.cpp的Initinstance()中加入代码:  
                  //加在int   nResponse=dlg.DoModal();  
                  前一个RGB设置背景色,第二个设置字体颜色  
  SetDialogBkColor(RGB(0,0,255),RGB(0,255,0));      
   
  方法三:  
  1.在对话框类中添加成员变量:  
  public:  
          CBrush         m_brushBlue;  
   
  2.在对话框类的OnInitDialog()中添加代码:  
  m_brushBlue.CreateSolidBrush(RGB(0,0,255));  
   
  3.用ClassWizard在对话框类中添加成员函数OnCtlCollor(),并在其中添加代码:  
  if(nCtlColor==CTLCOLOR_DLG)  
  return   m_brushBlue;  
   
   
   
  例:   动态改变背景色,不会将控件,工具条覆盖  
  //OnButton   中  
  CPaintDC   dc(this);  
  CRect   rect;  
  GetClientRect(&rect);  
   
  CBrush   br;  
  br.CreateSolidBrush(RGB(0,255,0));  
  dc.FillRect(&rect,&br);  
  Top

3 楼laiyiling(陌生人[MVP])回复于 2005-08-04 08:39:42 得分 0

重载OnCtlColor   (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor),即WM_CTLCOLOR消息。  
  ----   ①在CExampleDlgDlg的头文件中,添加一CBrush的成员变量:    
  class   CExampleDlgDlg   :   public   CDialog  
  {...  
  protected:  
  CBrush   m_brush;    
  ...  
  };  
  ----   ②在OnInitDialog()函数中添加如下代码:    
  BOOL   CExampleDlgDlg::OnInitDialog()    
  {  
  ...  
  //   TODO:   Add   extra   initialization   here  
  m_brush.CreateSolidBrush(RGB(0,   255,   0));   //   生成一绿色刷子    
  ...  
  }    
  ----   ③利用ClassWizard重载OnCtlColor(…),即WM_CTLCOLOR消息:    
  HBRUSH   CExampleDlgDlg::OnCtlColor  
  (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)    
  {  
  /*  
  **   这里不必编写任何代码!  
  **下行代码要注释掉  
  **   HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);  
  */  
  return   m_brush;       //返加绿色刷子  
  }Top

4 楼xwolf1979(君)回复于 2005-08-04 10:36:28 得分 0

重载OnCtlColor   (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor),添加代码  
  if(nCtlColor   ==   CTLCOLOR_DLG)  
  {  
          pDC->SetBkMode(TRANSPARENT);  
          HBRUSH   b   =   CreateSolidBrush(RGB(*,*,*));  
          return   (HBRUSH)b;  
  }Top

5 楼casinosun(去日苦多)回复于 2005-08-04 10:38:47 得分 0

同意上面在OnCtlColor写就行了Top

6 楼cdef9108()回复于 2005-08-04 20:52:10 得分 0

m_brushBlue.CreateSolidBrush(RGB(0,0,255));  
  应写道构造函数中,其他的写在OnCtlColor   ,就可以了!!Top

相关问题

  • 关于对话框的背景颜色修改?
  • 如何改变对话框的背景颜色?
  • 怎样设置对话框的背景颜色?
  • 如何更改对话框的背景颜色
  • 讨论改变对话框背景颜色的问题
  • 怎么改变工具条、对话框的背景颜色?
  • 请问设置对话框背景颜色怎么设置?
  • 如何获得对话框窗体背景的颜色
  • 都有什么办法改变背景颜色或为对话框加背景
  • 如何修改一个无模式的对话框的背景颜色?

关键词

  • 代码
  • 函数
  • dc
  • 对话框
  • onctlcolor
  • brushblue
  • cexampledlgdlg
  • nctlcolor
  • 添加
  • createsolidbrush

得分解答快速导航

  • 帖主:fashionzhou

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo