如何改变STATIC控件的文字颜色

原创 2006年06月07日 16:56:00

通过处理WM_CTLCOLORSTATIC消息,必需注意以下几点:

1、  MFC没有使用WM_CTLCOLORSTATIC消息,而是使用WM_CTLCOLOR消息;

2、 必须返回一个背景刷子,即使你不改变背景颜色;如果STATIC的背景色要与父窗口背景色相同,可以用GetStockObject(NULL_BRUSH) 返回空画刷;

3、 返回的画刷颜色并不是文字的颜色,如果要改变文字颜色,可以调用SetTextColor

4、 不要每次处理都创建一个刷子,应该用一个成员变量来保存刷子(全局变量也可),并要释放它,如果是由GetStockObject返回的刷子,就不用那么麻烦;

 

下面是用WTL写的示例:

LRESULT OnCtlColorStatic( HDC hdc , HWND hwnd )

       {

           // 只处理特定的STATIC

              if( hwnd == GetDlgItem( IDC_STATIC1 ) )

              {

                     ::SetTextColor( hdc , RGB(255,0,0) );

                     ::SetBkMode( hdc , TRANSPARENT ) ;

                     return (LRESULT)GetStockObject( NULL_BRUSH ) ;

              }

              SetMsgHandled(FALSE);

              return 0 ;

       }

 

修改static控件背景颜色和文字颜色

当 static 控件或具有 ES_READONLY 风格的 edit 控件被绘制时,会向父窗口发送 WM_CTLCOLORSTATIC 消息。如果我们在窗口过程中处理该消息,就必须返回一个画刷句柄,...
  • softn
  • softn
  • 2016年06月20日 06:41
  • 1483

动态改变listctrl 单元格背景及文字颜色(非重写控件)

CListCtrl 类里面没有直接改变单元格背景及文字颜色的成员函数,只有改变整个背景的颜色。我有时候只是需要把某个单元格的颜色改变来突出显示就可以了: 我们可以通过重载ListCtrl控件的C...

MFC EDIT控件中改变背景色和文字颜色

这两天需要给MFC中的EDIT框改变一下背景颜色,而且由于框比较多,且每次需要变色的框也是随机的,但是个数是确定的。在网上搜了好多,下面这个是介绍的比较清楚,而且可以用的一种方法。 由于本人用的vs...
  • wjeson
  • wjeson
  • 2012年03月22日 11:12
  • 21210

MFC EDIT控件中改变背景色和文字颜色

这两天需要给MFC中的EDIT框改变一下背景颜色,而且由于框比较多,且每次需要变色的框也是随机的,但是个数是确定的。在网上搜了好多,下面这个是介绍的比较清楚,而且可以用的一种方法。 由于本人用的vs...

Mfc子窗口修改Static Text控件的字体、大小、颜色

开门见山:创建子窗口的方法请参考我上一篇博客:http://blog.csdn.net/u014411348/article/details/53911682 主窗口修改Static Text控件网上...

MFC 可以设置背景色、字体、字体颜色、透明背景的 Static 静态文本控件

MFC库里没有符合这个条件的控件,于是我自己写了一个,初步测试有效。 注:可以设置透明背景,但还不能做到透明度设置(如50%透明度)         如果设置了背景色,就不保留透明背景        ...

XListBox-自画条目背景和文字颜色的listbox控件

程序运行效果截图: 演示程序 提供的演示中介绍了各种功能的具体使用方法。演示如左图: 1.摘要 Listboxes控件在很多情况下是经常用到的。我大多数的时候是使用在纪录某些日...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何改变STATIC控件的文字颜色
举报原因:
原因补充:

(最多只允许输入30个字)