• 颜色设置 OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 的用法


    OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

    MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:

    afx_msg HBRUSH OnCtlColor(

       CDC* pDC,

       CWnd* pWnd,

       UINT nCtlColor

    );

    参数分析:

    pDC     包含了子窗口的显示设备环境的指针。可能是临时的。

    pWnd     包含了要求颜色的控件的指针。可能是临时的。

    nCtlColor  包含了下列值,指定了控件的类型:

    · CTLCOLOR_BTN       按钮控件

    · CTLCOLOR_DLG     对话框

    · CTLCOLOR_EDIT     编辑控件

    · CTLCOLOR_LISTBOX  列表框控件

    · CTLCOLOR_MSGBOX  消息框

    · CTLCOLOR_SCROLLBAR   滚动条控件

    · CTLCOLOR_STATIC   静态控件

     返回值:

      返回一个句柄是控制背景的画刷

    备注:

     

     

    个人使用

    添加私有变量 BRUSH m_brush,之后

    重载WM_CTLCOLOR消息的响应函数

    【程序实现】

    1.假设你有一个CTextDialog, 你有了一个STATIC的控件,ID为IDC_STATIC1

     

    HBRUSH CTextDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    	HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
    
    	// TODO:  在此更改 DC 的任何特性
    	if (nCtlColor==CTLCOLOR_STATIC)
    
    	{    
    		pDC-> SetTextColor(RGB(255,0,0)); //字体颜色
    		pDC-> SetBkColor(RGB(0, 0, 255)); //字体背景色
    
    	}
    	// TODO:  如果默认的不是所需画笔,则返回另一个画笔
    	return hbr;
    }
    

     

    备注:

    BLACK_BRUSH:黑色

    WHITE_BRUSH:白色

    GRAY_BRUSH:灰色

    NULL_BRUSH:透明

    HOLLOW_BRUSH:透明

    TRANSPARENT :透明

     

     待完善

    http://msdn.microsoft.com/en-us/library/0wwk06hc%28v=VS.80%29.aspx

    http://blog.sina.com.cn/s/blog_7d1dc9de010115uu.html

     

     

  • 相关阅读:
    学习进度14
    计算最长英语单词链
    梦断代码阅读笔记02
    梦断代码阅读笔记01
    学习进度13
    评价输入法
    课堂测试——找水王
    第二阶段冲刺05
    实验2
    实验 1 Linux 系统的安装和常用命令
  • 原文地址:https://www.cnblogs.com/gaoquanning/p/3028317.html
Copyright © 2020-2023  润新知