GetMessage()与PeekMessage(),以及WM_PAINT消息相关

  1. windows不会将多个WM_PAINT消息放到消息队列中

  2. GetMessage获取一个可派发消息,返回true,获取不可派发消息返回false(可派发:如WM_PAINT,WM_COMMAND;不可派发:只有一个WM_QUIT)

  3. GetMessage函数获取消息之后,将会使该消息被消息队列所删除(WM_PAINT消息除外,至于WM_PAINT则只有在其被合理处理之后才被删除)

  4. PeekMessage()函数如果最后一个参数为PM_REMOVE,则也是在获取消息之后,使该消息被删除(WM_PAINT除外)

  5. GetMessage与PeekMessage区别:GetMessage直到获取一个消息才会返回,如果消息队列中没有消息则会阻塞;PeekMessage不管获得不获得消息都会立即返回,获得返回true,不获得返回false。

  6. 窗口产生“无效区域“,则会产生WM_PAINT消息;

  7. 产生”无效区域“的方法:用户移动窗口,显示窗口;窗口大小改变;InvalidateRect函数使指定区域无效;ScrollWindow或ScrollDc滚动显示窗口的一部分

  8. 令WM_PAINT消息被删除的唯一方法是:使所有”无效区域“有效!

  9. 令”无效区域“有效的方法有:BeginPaint()会使整个窗口有效;ValidateRect()会使指定区域有效

你可能感兴趣的:(GetMessage,WM_PAINT,ValidateRect,InvalidateRect,windows消息原理,PeekMessage)