现在的位置: 首页 > 综合 > 正文

3.31如何改变程序清单视图的背景颜色?

2013年10月21日 ⁄ 综合 ⁄ 共 1459字 ⁄ 字号 评论关闭

      “3.26如何改变一个视图的背景颜色?”中介绍的技术不能改变程序清单视图的背景颜色。因为程序清单视图是一种特殊类型的对话框,而Windows以特殊的方式处理对话框的背景颜色。所以,如果打算使程序清单视图具有生动的背景,则仔细按照下面的步骤进行:

第1步:在程序清单类中定义并初始化HBRUSH类型的成员变量。

第2步:使用ClassWizard在程序清单视图类中增加一个WM_CTLCOLOR消息句柄,该句柄的实现如下面的程序清单所示:

第3步:使用与下面相似的代码来改变程序清单视图的背景颜色。

解释:为了允许对话框(或程序清单视图)改变 用来绘画每个控件的颜色,Windows为对话框上的每个控件已经对话框本身发送WM_CTLCOLOR消息,该消息的句柄有如下的原型:

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

调用pDC->SetTextColor()设置文本颜色,通过返回一个刷子句柄来来设置背景颜色,当返回一个刷子句柄时,须小心,当离开OnCtlColor函数时,不要释放该句柄----也就是说,在OnCtlColor()函数中不要返回一个在堆栈中创建的CBrush对象的句柄。

pWnd变量指向一个(可能是临时的)CWnd对象,它代表程序清单视图要绘制的颜色的控件。

nCtlColor变量指明了OnCtlColor()绘制的控件类型,该变量可以是下面的数值之一:

CTLCOLOR_BTN 按钮控件
CTLCOLOR_DLG 对话框本身
CTLCOLOR_EDIT 编辑控件
CTLCOLOR_LISTBOX 列表框控件
CTLCOLOR_MSGBOX 消息框
CTLCOLOR_SCROLLBAR 滚动条控件
CTLCOLOR_STATIC 静态控件

【上篇】
【下篇】

抱歉!评论已关闭.