zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    【转】IDEA2019.1.3版本破解
    Docker部署Vue
    Docker使用
    MySql触发器
    JVM 理论基础目录(待更新,系列完全写完后会统一整理好)
    JVM 5 JAVA 垃圾回收机制
    JVM 运行时数据区:程序计数器、Java 虚拟机栈和本地方法栈,方法区、堆以及直接内存
    JVM 整体流程介绍
    JVM 入门指南
    Linux 常用命令(根据自己的理解随时更新)
  • 原文地址:https://www.cnblogs.com/zhangnianyong/p/6418690.html
Copyright © 2011-2022 走看看