VC自定义图片按钮控件的实现
(转载)以前编写过五子棋程序的框架,整个程序的背景都是我用photoshop画的,当然也包括几个按钮。
说是按钮,其实就是图片上的按钮,跟vc的按钮控件是完全不同,但是当时我想让画的按钮也响应鼠标动作比如鼠标移动到按钮上,鼠标单击等,方法很笨,就是在主对话框中对鼠标的移动和单击动作进行检测,如果发生位置位于按钮区,就在“按钮”区另贴一幅图,以实现鼠标在其上的效果,单击类似。
对于多个按钮,就要检测多个区域,程序十分复杂,而且性能很差。
于是想改写vc的CButton类,来实现我的功能。在网上查了很多资料,都是说怎么在按钮上显示一副图片,能显示但是还有着原来按钮的边框,虚线。还得自己动手写。
要求:
1.动态生成一个图片按钮,函数输入两幅图片的ID,及按钮坐标和大小,最为重要的是指定单击它要向父窗口传递的消息值(自定义)
2.当鼠标在经过按钮上时图片按钮变为另外一幅图,跟正常状态下的图像形成对比
3.当鼠标单击这个按钮,父窗口得到初始化时给这个窗口指定的消息值,以便在有多个按钮存在时进行区分响应
过程:
1.从CButton类派生CMyBtn类,增加如下变量:
enum {STATE_MOUSEON, STATE_NORMAL}; // 定义按钮状态