当前位置:在线查询网 > 在线百科全书查询 > WM_CTLCOLORBTN讯息

WM_CTLCOLORBTN讯息_在线百科全书查询


请输入要查询的词条内容:

WM_CTLCOLORBTN讯息




简介


如何将显示区域的颜色和文字颜色调节成按钮的背景颜色。我们是否可以将程式中按钮的颜色调节为我们喜欢的颜色呢?理论上没有问题,但在实际中请别这样做。用SetSysColors来改变按钮的外观可能不是您想做的,这会影响目前在Windows下执行的所有程式,这也是使用者不太喜欢的。

更好的方法(同样也只是理论上)是处理WM_CTLCOLORBTN讯息,这是当子视窗即将为其显示区域著色时,由按钮控制项发送给其父视窗讯息处理程式的一个讯息。父视窗可以利用这个机会来改变子视窗讯息处理程式将用来著色的颜色(在Windows的16位元版本中,一个称为WM_CTLCOLOR的讯息被用於所有的控制项,现在针对每种型态的标准控制项,分别代之以不同的讯息)。

当父视窗讯息处理程式收到WM_CTLCOLORBTN讯息时,wParam讯息参数是按钮的装置内容代号,lParam是按钮的视窗代号。当父视窗讯息处理程式得到这个讯息时,按钮控制项已经获得了它的装置内容。当您的视窗讯息处理程式处理一个WM_CTLCOLORBTN讯息时,您必须完成以下三个动作:

使用SetTextColor选择设定一种文字颜色。

使用SetBkColor选择设定一种文字背景颜色。

将一个画刷代号传回给子视窗。

理论


理论上,子视窗使用该画刷来著色背景。当不再需要这个画刷时,您应该负责清除它。

下面是使用WM_CTLCOLORBTN的问题所在:只有按键和拥有者绘制按钮才给其父视窗发送WM_CTLCOLORBTN,而只有拥有者绘制按钮才会回应父视窗讯息处理程式对讯息的处理,而使用画刷来著色背景。这基本上是没有意义的,因为无论怎样都是由父视窗来负责绘制拥有者绘制按钮。

在本章後面,我们将说明,在某些情况下,一些类似於WM_CTLCOLORBTN但适用于其他型态控制项的讯息将更为有用。