步骤/方法
1、自绘控件是美化界面不可缺少的操作。 要自绘标准按钮控件,首先需要使控件具有自绘的能力,即要为按钮添加bs_ownerdraw属性。在此,我们需要重载presubclasswindow虚函数,在该函数中添加modifystyle(0, bs_ownerdraw);
2、当按钮控件具有了自绘功能之后,每次控件状态改变都会触发drawitem函数,在该函数中来绘制按钮的形态外观,所以第二步就要重载drawitem虚函数。在这个函数中就可以自由发挥了,比如绘制外边框,底色,按钮标题,内边框等等。
3、一般都会为按钮定义几种不同状态时的外观,比如光标滑过时的状态,按钮按下时的状态,按钮禁用时的状态,以及按钮的正常状态等等。这就要为新的按钮添加几种重要的消息响应。比如wm_mouseleave消息,wm_mousehover消息和wm_mousemove消息等等,值得一提的是前两个消息的响应函数需要自己手动添加,微软提供了一个trackmouseevent函数在光标离开一个窗口时投递wm_mouseleave消息,光标滑过窗口时投递wm_mousehover消息。一般来说可以在wm_mousemove消息响应函数中调用trackmouseevent函数来投递
4、wm_mouseleave消息和wm_mousehover消息。然后在wm_mouseleave消息的响应函数中标记“光标已经离开按钮”,然后调用invalidaterect函数让按钮重绘。在wm_mousehover消息的响应函数中标记“光标正在按钮上方”,并调用invalidaterect函数让按钮重绘。