CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何改变的Static控件颜色?

楼主myb123(myb123)2000-12-15 13:40:00 在 VC/MFC / 基础类 提问

对话框中有两个Static控件IDC_STATIC1和IDC_STATIC2,我想使一个为红色一个为绿色,在对话框的消息WM_CTLCOLOR处理中竟不能实现(这两个控件的颜色还是原来的黑色),  
  想请教各位大侠,pWnd指的是哪个窗口的指针?如何才能实现上述?  
   
  HBRUSH   CMyDlg::OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)    
  {  
  HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);  
   
  //   TODO:   Change   any   attributes   of   the   DC   here  
  CWnd   *pStatic1=GetDlgItem(IDC_STATIC1);  
                    CWnd   *pStatic2=GetDlgItem(IDC_STATIC2);  
  if   (pWnd==pStatic1)  
  {  
  pDC->SetTextColor(RGB(255,0,0));  
  }  
   
                    if   (pWnd==pStatic2)  
  {  
  pDC->SetTextColor(RGB(0,255,0));  
  }  
  //   TODO:   Return   a   different   brush   if   the   default   is   not   desired  
  return   hbr;  
  } 问题点数:50、回复次数:6Top

1 楼wistaria(听风听雨)回复于 2000-12-15 14:03:00 得分 20

HBRUSH   CMyDlg::OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)    
  {  
  HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);  
   
  //   TODO:   Change   any   attributes   of   the   DC   here  
  if(nCtlColor   ==   CTLCOLOR_EDIT)  
  {  
  if(pWnd->GetDlgCtrlID()==IDC_STATIC1))//设置控件IDC_STATIC1  
  {  
  pDC->SetBkColor(RGB(255,0,0));  
  return   一个刷子;  
  }  
                                      if(pWnd->GetDlgCtrlID()==IDC_STATIC2)//设置控件IDC_STATIC2  
                                      {  
                                                        pDC->SetBkColor(RGB(0,255,0);  
                                                        return   一个刷子;  
                                      }  
  }  
   
                    if(nCtlColor==CTLCOLOR_EDIT)//设置对话框背景  
                    {  
                                    pDC->SetBkColor(...);  
                                    return   一个刷子  
                    }  
  //   TODO:   Return   a   different   brush   if   the   default   is   not   desired  
  return   hbr;  
  }Top

2 楼Hidy(Hidy)回复于 2000-12-15 14:05:00 得分 20

怎么又有这样的问题?把下面的代码COPY过去,应该没问题的:  
   
  HBRUSH   CMyDlg::OnCtlColor(CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)    
  {  
  HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);  
   
  //   TODO:   Change   any   attributes   of   the   DC   here  
  switch(pWnd->GetDlgCtrlID())  
  {  
  case   IDC_STATIC1   :    
      pDC->SetTextColor(RGB(255,0,0));  
      break;  
  case   IDC_STATIC2   :  
      pDC->SetTextColor(RGB(0,255,0));  
      break;  
  }  
  //   TODO:   Return   a   different   brush   if   the   default   is   not   desired  
  return   hbr;  
  }    
  Top

3 楼Hidy(Hidy)回复于 2000-12-15 14:06:00 得分 0

为什么我会比   wistaria   晚了一步?Top

4 楼lhxx(随风)回复于 2000-12-15 14:07:00 得分 5

wistaria说得不错,当然如果你愿意也可以继承CStatic,然后重载它的OnPaint()Top

5 楼ecore(电子内核)回复于 2000-12-15 16:27:00 得分 5

就是得到她的DC啊,然后爱怎样怎样。Top

6 楼myb123(myb123)回复于 2000-12-15 17:18:00 得分 0

Thank   all   people!That's   right!Add   score!Top

相关问题

  • 请问如何改变静态文本控件Static的颜色?
  • 改变控件颜色的问题
  • 怎样改变控件的颜色?
  • 怎样改变控件的颜色?
  • 怎样改变控件的颜色啊?
  • 怎么改变StatusBar控件的颜色?
  • 怎么改变StatusBar控件的颜色?
  • 如何改变控件的颜色
  • 怎样使slide控件改变颜色
  • 如何改变BUTTON控件的颜色

关键词

  • 控件
  • idc
  • dc
  • pwnd
  • nctlcolor
  • pdc
  • hbr
  • onctlcolor
  • hbrush
  • pstatic

得分解答快速导航

  • 帖主:myb123
  • wistaria
  • Hidy
  • lhxx
  • ecore

相关链接

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

广告也精彩

反馈

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