下面我们针对每个控件设置特殊的颜色,区分控件可以通过控件的ID,修改控件背景也很简单,直接返回相应的画刷就可以了,下面就是颜色设置的完整代码:
现在看看效果:
图.5 修改OnCtlColor之后的效果
上面的代码是根据控件ID来设置颜色,还可以根据控件的类型统一设置某种控件的颜色,这就要用到nCtlColor参数,nCtlColor参数用来指明发送这个通知消息的控件的类型,nCtlColor可以是以下取值:
CTLCOLOR_BTN
CTLCOLOR_DLG
CTLCOLOR_EDIT
CTLCOLOR_LISTBOX
CTLCOLOR_MSGBOX
CTLCOLOR_SCROLLBAR
CTLCOLOR_STATIC
第三步:使用位图作对话框的背景
使用位图作为对话框的背景也很简单,就是在OnEraseBkgnd中用位图填充客户区,只是在OnCtlColor中需要注意返回空画刷代替原来的画刷,返回空画刷是为了阻止控件绘制自己的背景,从而破坏位图背景的完整性,但是有时候返回空画刷会对其他控件产生不良影响,所以我们只处理了CTLCOLOR_BTN和CTLCOLOR_STATIC两种类型的消息:
下面是使用位图背景和空画刷的效果:
图.6 使用位图背景