关于设置Dialog背景颜色及其控件颜色中涉及的知识点
2012-07-25 10:30
302 查看
1.函数OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
函数的命名:Ctl为Control的缩写,虽然一般Control的缩写为Ctr,但这里确实是Ctl,函数名意为响应控件颜色消息。
CDC类:Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 。MFC基础类库定义了设备环境对象类----CDC类。
pDC由控件的父级提供,控件父级一般就是Dialog,除了combo box的drop-down list box,因为drop-down list box的父级是combo box,所以Dialog的OnCtlColor不会响应drop-down list box的消息。要想改变drop-down list box of combo box的颜色,则需要为combo box创建一个类,在类中重载消息函数OnCtlColor,check
nCtlColor的参数CTLCOLOR_LISTBOX来实现。
pWnd:控件的句柄
nCtlColor:每种类型的控件有其对应的nCtlColor值
因为该函数中提供了控件的pWnd(句柄),则可以调用pWnd->GetDlgCtrID()来获取控件的ID,通过判断,可以实现对某个ID的控件进行Check,来改变它的颜色。
更多的应用是,来Check不同控件类型的nCtlColor值,来改变控件颜色。
CTLCOLOR_BTN Button control
CTLCOLOR_DLG Dialog box
CTLCOLOR_EDIT Edit control
CTLCOLOR_LISTBOX List-box control
CTLCOLOR_MSGBOX Message box
CTLCOLOR_SCROLLBAR Scroll-bar control
CTLCOLOR_STATIC Static control
2.HDC,DC,CDC
DC: Device Context,中文也叫设备上下文,是一种包含有关某个设备(如显示器或打印机)的绘制属性信息的 Windows 数据结构。
CDC: MFC中封装了操作系统窗口输出底层API的封装类,如CDC的派生类CClientDC,用于窗口客户区域的输出。
HDC: VC++开发环境中的DC句柄类型,32比特的无符号整数类型,用来标识DC设备的句柄。
设备上下文:即DC。
3.RGB,ColorREF
4.GetStockObject()
该函数检索预定义的备用笔、刷子、字体或者调色板的句柄。
例如:(HBRUSH)::GetStockObject(BLACK_BRUSH); // 设置背景色
预定义的样式:
BLACK_BRUSH:黑色
WHITE_BRUSH:白色
GRAY_BRUSH:灰色
NULL_BRUSH:透明
HOLLOW_BRUSH :透明
参考:
【1】http://baike.baidu.com/view/1923644.htm
【2】http://zhidao.baidu.com/question/201429108
【3】http://hi.baidu.com/peishenglu/blog/item/e5d5df58d5a4ae272934f0fc.html
【4】http://hi.baidu.com/songwentao/item/2175de0d1b250bc22e4c6be8
函数的命名:Ctl为Control的缩写,虽然一般Control的缩写为Ctr,但这里确实是Ctl,函数名意为响应控件颜色消息。
CDC类:Windows使用与设备无关的图形设备环境(DC :Device Context) 进行显示 。MFC基础类库定义了设备环境对象类----CDC类。
pDC由控件的父级提供,控件父级一般就是Dialog,除了combo box的drop-down list box,因为drop-down list box的父级是combo box,所以Dialog的OnCtlColor不会响应drop-down list box的消息。要想改变drop-down list box of combo box的颜色,则需要为combo box创建一个类,在类中重载消息函数OnCtlColor,check
nCtlColor的参数CTLCOLOR_LISTBOX来实现。
pWnd:控件的句柄
nCtlColor:每种类型的控件有其对应的nCtlColor值
因为该函数中提供了控件的pWnd(句柄),则可以调用pWnd->GetDlgCtrID()来获取控件的ID,通过判断,可以实现对某个ID的控件进行Check,来改变它的颜色。
更多的应用是,来Check不同控件类型的nCtlColor值,来改变控件颜色。
CTLCOLOR_BTN Button control
CTLCOLOR_DLG Dialog box
CTLCOLOR_EDIT Edit control
CTLCOLOR_LISTBOX List-box control
CTLCOLOR_MSGBOX Message box
CTLCOLOR_SCROLLBAR Scroll-bar control
CTLCOLOR_STATIC Static control
2.HDC,DC,CDC
DC: Device Context,中文也叫设备上下文,是一种包含有关某个设备(如显示器或打印机)的绘制属性信息的 Windows 数据结构。
CDC: MFC中封装了操作系统窗口输出底层API的封装类,如CDC的派生类CClientDC,用于窗口客户区域的输出。
HDC: VC++开发环境中的DC句柄类型,32比特的无符号整数类型,用来标识DC设备的句柄。
设备上下文:即DC。
3.RGB,ColorREF
RGB(r,g,b)是一个宏 实际上它做得事是((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16))) rgb(r,g,b) = 一个整型值 = r + g * 256 + b*255*256 (r + g * 256 + b*256*256) COLORREF 是 一 个 32-bit 整 型 数 值,它 代 表 了 一 种 颜 色。你 可以 使 用 RGB 函 数 来 初 始 化 COLORREF 它的定义 typedef DWORD COLORREF; COLORREF变量有两种赋值方法 ●第一种 COLORREF cf = RGB(,,); ●第二种 CColorDialog colorDialog; COLORREF color; if( colorDialog.DoModal() == IDOK ) { color = colorDialog.GetColor(); } 这 段 代 码 使 用 了 MFC 中 的 颜 色 对 话 框 如何从 COLORREF中取出RGB分量值? 可以使用宏GetRValue GetGValue GetBValue 他们的定义如下 #define GetRValue(rgb) ((BYTE)(rgb)) #define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8)) #define GetBValue(rgb) ((BYTE)((rgb)>>16)) |
该函数检索预定义的备用笔、刷子、字体或者调色板的句柄。
例如:(HBRUSH)::GetStockObject(BLACK_BRUSH); // 设置背景色
预定义的样式:
BLACK_BRUSH:黑色
WHITE_BRUSH:白色
GRAY_BRUSH:灰色
NULL_BRUSH:透明
HOLLOW_BRUSH :透明
参考:
【1】http://baike.baidu.com/view/1923644.htm
【2】http://zhidao.baidu.com/question/201429108
【3】http://hi.baidu.com/peishenglu/blog/item/e5d5df58d5a4ae272934f0fc.html
【4】http://hi.baidu.com/songwentao/item/2175de0d1b250bc22e4c6be8
相关文章推荐
- 设置Dialog的背景颜色及其中控件的背景颜色和字体颜色
- 关于设置对话框的背景颜色,和设置控件的字体颜色或背景颜色
- 关于设置对话框的背景颜色,和设置控件的字体颜色或背景颜色VC++
- 关于设置对话框的背景颜色,和设置控件的字体颜色或背景颜色
- 代码设置TextView、Button等控件圆角边框背景颜色
- OnCtlColor函数:MFC设置静态文本框,编辑框等控件背景和字体颜色
- MFC 可以设置背景色、字体、字体颜色、透明背景的 Static 静态文本控件
- C#学习笔记:设置label(标签)控件的背景颜色为透明
- 主窗口及控件背景颜色信息设置
- 动态设置Edit控件的背景及字体颜色
- Android 最全控件背景状态颜色圆角设置处理,页卡处理
- 关于dialog设置无标题无背景(去掉背后的灰色框)
- OnCtlColor函数:MFC设置静态文本框,编辑框等控件背景和字体颜色
- Android中设置控件的背景颜色的方式整理
- android space控件设置背景颜色无效
- 对话框控件背景、字体颜色设置
- 关于NavigationBar背景图片和颜色的设置
- 关于NavigationBar背景图片和颜色的设置
- 控件背景颜色和窗口背景颜色的设置
- 对话框控件背景、字体颜色设置