MFC的控件常常需要动态的改变文字颜色和背景底色,最好的做法是修改控件本身,增加设置颜色的接口函数直接调用,进行控件颜色的修改。CtlColor是反射式消息的响应函数,在控件内部自己实现重绘,这种方式是最好的。与反射式消息修改控件本身不同,还有另一种方式使用OnCtlColor在控件父窗口类中增加代码修改颜色,这两种方式都可以实现颜色的修改。这篇博客主要介绍反射式消息的方式。
0.给对话框添加一个Edit Control控件,并添加空间变量
1.从CEdit继承一个类CColorEdit
2.在CColorEdit类中添加反射消息
这里注意添加的消息是 ”’=WM_CTLCOLOR”’ 而不是 ”’WM_CTLCOLOR”’ (少了等于号),前者”’=WM_CTLCOLOR”’ 是反射式,响应函数是CtlColor,控件自己发送自己接受,后者是接收子控件发给自己的消息,响应函数是OnCtlCo