VC++ 设置控件显示文本的前景色、背景色以及字体

在每个控件开始绘制之前,都会向其父窗口发送WM_CTLCOLOR通告消息,在该消息的处理函数中,可以设置控件显示文本的前景色、背景色以及字体。该消息处理函数还要求返回一个画刷的句柄,用于在控件具体的绘制之前擦除其客户区。

HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

  HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

  // TODO:  Return a different brush if the default is not desired

  return hbr;

}

1、pDC:控件的上下文对象。

2、pWnd:控件对象指针,可以指定具体某个控件的属性。

3、nCtlColor:Color Types。

Color Types:

#define CTLCOLOR_MSGBOX 0
#define CTLCOLOR_EDIT 1
#define CTLCOLOR_LISTBOX 2
#define CTLCOLOR_BTN 3
#define CTLCOLOR_DLG 4
#define CTLCOLOR_SCROLLBAR 5
#define CTLCOLOR_STATIC 6
#define CTLCOLOR_MAX 7

#define COLOR_SCROLLBAR 0
#define COLOR_BACKGROUND 1
#define COLOR_ACTIVECAPTION 2
#define COLOR_INACTIVECAPTION 3
#define COLOR_MENU 4
#define COLOR_WINDOW 5
#define COLOR_WINDOWFRAME 6
#define COLOR_MENUTEXT 7
#define COLOR_WINDOWTEXT 8
#define COLOR_CAPTIONTEXT 9
#define COLOR_ACTIVEBORDER 10
#define COLOR_INACTIVEBORDER 11
#define COLOR_APPWORKSPACE 12
#define COLOR_HIGHLIGHT 13
#define COLOR_HIGHLIGHTTEXT 14
#define COLOR_BTNFACE 15
#define COLOR_BTNSHADOW 16
#define COLOR_GRAYTEXT 17
#define COLOR_BTNTEXT 18
#define COLOR_INACTIVECAPTIONTEXT 19
#define COLOR_BTNHIGHLIGHT 20

#define COLOR_3DDKSHADOW 21
#define COLOR_3DLIGHT 22
#define COLOR_INFOTEXT 23
#define COLOR_INFOBK 24

#define COLOR_HOTLIGHT 26
#define COLOR_GRADIENTACTIVECAPTION 27
#define COLOR_GRADIENTINACTIVECAPTION 28

#define COLOR_MENUHILIGHT 29
#define COLOR_MENUBAR 30

#define COLOR_DESKTOP COLOR_BACKGROUND
#define COLOR_3DFACE COLOR_BTNFACE
#define COLOR_3DSHADOW COLOR_BTNSHADOW
#define COLOR_3DHIGHLIGHT COLOR_BTNHIGHLIGHT
#define COLOR_3DHILIGHT COLOR_BTNHIGHLIGHT
#define COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT

根据这些Color Types可以指定不同类型控件的属性,常用属性设置有

pDC->SetTextColor(RGB(255, 0, 0));    //设置文本前景色

pDC->SetBkColor(RGB(255, 255, 255));  //设置文本背景色

pDC->SetBkMode(TRANSPARENT);          //TRANSPARENT或OPAQUE

最后要返回自定义HBRUSH

例子:

HBRUSH CShowVideoDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
  HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

  // TODO: Change any attributes of the DC here
  HBRUSH b;
  if(nCtlColor == CTLCOLOR_STATIC)
  {
    switch(pWnd->GetDlgCtrlID())
    {
      case IDC_NODE_NAME:
      {
        pDC->SetTextColor(0x228B22);
        pDC->SetBkColor(RGB(0x8D, 0xB6, 0XCD));

        b = CreateSolidBrush(RGB(0x8D, 0xB6, 0XCD));
      }
      break;
      case IDC_STATIC_DisPlay:
      {
        pDC->SetBkColor(RGB(0, 0, 0));

        b = CreateSolidBrush(RGB(0, 0, 0));
      }
      break;
    }
  }
  else if(nCtlColor == COLOR_MENU)
  {
    if(pWnd->GetDlgCtrlID() == IDR_PLAY_MENU)
    {
      pDC->SetTextColor(0x228B22);
      pDC->SetBkColor(RGB(0x8D, 0xB6, 0XCD));

      b = CreateSolidBrush(RGB(0x8D, 0xB6, 0XCD));
    }
  }

  return b;
  // TODO: Return a different brush if the default is not desired
  //return hbr;
}

时间: 2024-10-11 22:55:05

VC++ 设置控件显示文本的前景色、背景色以及字体的相关文章

ios之如何让图片显示成圆形的样式/设置控件边框大小以及颜色

比如说QQ登陆头像显示出来的就是圆形的,但实际上它的图片并非就是圆形,而是通过对layer层进行绘制而成的.说到layer每个控件都会有layer层属性所以可以把任意的控件都可以设置成圆形,或是椭圆型看项目需要而定 UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"头像.png"]]; imageView.frame = CGRectMake(100, 100, 100, 1

js设置控件的隐藏与显示的两种方法

js设置控件的隐藏与显示,设置控件style的display和visibility属性就可以了,下面有个示例,需要的朋友可以参考下用JavaScript隐藏控件的方法有两种,分别是通过设置控件的style的“display”和“visibility”属性.当style.display="block"或style.visibility="visible"时控件或见,当style.display="none"或style.visibility=&qu

cocos2d-x学习笔记(六)TextBMFont控件显示中文乱码或者无法显示

今天用cocos studio加了一个TextBMFont控件,然后需要动态修改TextBMFont控件显示的字符串,用来显示中文的,结果一直无法修改TextBMFont控件的值,最后原来是写到xml文件的中文字符串没有保存成UTF-8格式. ===================================================================================== 记录一下完整实现步骤 一.制作BMFont字体 1.下载并安装BMFont软件 2.

重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性

[源码下载] 重新想象 Windows 8.1 Store Apps (77) - 控件增强: 文本类控件的增强, 部分控件增加了 Header 属性和 HeaderTemplate 属性, 部分控件增加了 PlaceholderText 属性 作者:webabcd介绍重新想象 Windows 8.1 Store Apps 之控件增强 文本类控件的增强 为一些控件增加了 Header 属性和 HeaderTemplate 属性 为一些控件增加了 PlaceholderText 属性 示例1.演示

控件显示问题

创建了一个控件,就是看不见: 1.当前控件没有添加到父控件中 2.当前控件的hidden = YES 3.当前控件的alpha <= 0.01 4.没有设置尺寸(frame.size.bounds.size) 5.位置不对(当前控件显示到窗口以外的区域) 6.背景色是clearColor 7.当前控件被其他可见的控件挡住了 8.当前控件是个显示图片的控件(没有设置图片/图片不存在,比如UIImageView) 9.当前控件是个显示文字的控件(没有设置文字/文字颜色跟后面的背景色一样,比如UILa

背水一战 Windows 10 (28) - 控件(文本类): TextBox, PasswordBox

原文:背水一战 Windows 10 (28) - 控件(文本类): TextBox, PasswordBox [源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) TextBox PasswordBox 示例1.TextBox 的示例 1Controls/TextControl/TextBoxDemo1.xaml <Page x:Class="Windows10.Controls.TextControl.TextBoxDemo1" xmln

背水一战 Windows 10 (27) - 控件(文本类): TextBlock

原文:背水一战 Windows 10 (27) - 控件(文本类): TextBlock [源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) TextBlock 示例1.TextBlock 的示例 1Controls/TextControl/TextBlockDemo1.xaml <Page x:Class="Windows10.Controls.TextControl.TextBlockDemo1" xmlns="http://

背水一战 Windows 10 (29) - 控件(文本类): RichTextBlock, RichTextBlockOverflow, RichEditBox

原文:背水一战 Windows 10 (29) - 控件(文本类): RichTextBlock, RichTextBlockOverflow, RichEditBox [源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) RichTextBlock RichTextBlockOverflow RichEditBox 示例1.RichTextBlock 的示例Controls/TextControl/RichTextBlockDemo.xaml <Page

背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox

原文:背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox [源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) AutoSuggestBox 示例Controls/TextControl/AutoSuggestBoxDemo.xaml <Page x:Class="Windows10.Controls.TextControl.AutoSuggestBoxDemo" xmlns="http:/