总结:
触发WM_PAINT消息的本质是改变窗口对应的显存的大小就触发一次,我们进行的每一次窗口最大化、最小化并恢复都是因为改变了窗口的显存而触发了该消息。在我们向屏幕外面拖动窗口时,这点比较特殊,窗口的显存是在一点点被擦除的,此时不会触发WM_PAINT,但是拉回窗口后,显存需要将擦除的部分重新绘制,这就又会触发一次该消息。而InvalidateRect函数,就是通过强制的清除并重绘显存来实现触发WM_PAINT消息。
三、WM_PAINT消息的处理
我们尝试处理WM_PAINT消息,并在窗口上绘制一个矩形,绘图步骤如下:
1、开始绘图处理
1 2 3 4 |
|
我们利用BeginPaint获取绘图设备的句柄---一个HDC对象,然后在改绘图设备上进行绘制。
2、利用HDC对象进行绘图
3、结束绘图处理
1 2 3 4 |
|
绘制过程参考下面的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
执行结果如下,我们成功绘制了一个矩形:
以上就是Win32 SDK基础(十二)之WM_PAINT消息的处理(图)的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
win32 sdk基础(十二)之wm_paint消息的处理(图)
win32 sdk基础(六)之详解窗口类的查找过程和相关api
win32 sdk基础(一)之windows程序分类以及库和头文件所在目录的详解
win32 sdk基础(三)之如何从零开始创建windows窗口的第一步
win32 sdk基础(八)之 关于windows消息机制的详解(图)
win32 sdk基础(二)之关于cl.exe和link.exe编译和连接程序的详解(图)
win32 sdk基础(四)之如何从零开始创建windows窗口的第二步
更多相关阅读请进入《win32》频道 >>