在上几篇中,我们说到了通过GdipCreateFromHDC函数将HDC(设备上下文句柄)装换成GDI+的Graphics对象,讲到了画笔和画刷的使用,演示了何利用GDI+Flat来画图片和画文字,讲到了双缓冲绘图和DC复制,并说了用GdiplusFlat来绘制按钮的方法1。
这一篇博文中,我们来聊聊如何用GdiplusFlat来绘制按钮的方法2。
还是和以前一样,我们必须自己声明GDI+Flat函数,自己定义GDI+Flat的数据结构。自己动手,丰衣足食。~~
在上一篇中我们已经知道了,自绘按钮有两种形式,这两种形式分别是:
1。我们不创建按钮,我们直接在窗口的设备上下文场景的一部分上绘制按钮,也就是说不存在一个子窗口,按钮完全是我们自己画上去的。
2。将一个标准的win32按钮子类化(子类化介绍),在按钮的WM_PAINT、WM_MOUSEMOVE、WM_MOUSELEAVE、WM_LBUTTONDOWN、WM_LBUTTONUP消息里面控制按钮的绘制,也就是说,我们直接基于一个Win32按钮,我们是改变了这个win32按钮的实现逻辑,绘制成我们需要的样式,按钮依旧作为子窗口存在。
上一篇讲了方法1,这一篇文章讲一讲方法2
上一篇地址:http://blog.csdn.net/zuishikonghuan/article/details/47394747
效果和上一篇中的一样,但方法略有不同,这种方法不需要判断鼠标指针位置,但需要对按钮子类化。
关于子类化的:http://blog.csdn.net/zuishikonghuan/article/details/47169605
效果图:(和上一篇一样)(GIF本身的限制,动画有颜色失真)<