WM_PAINT Message
WM_PAINT发送的时机:
1.当系统和另一个应用程序请求 重画应用程序一部分的时候
2.当UpdateWindow和RedrawWindow使用时
3.通过DispatchMessage转送时
Return Value
如果程序处理了这个消息, 那么应该返回0。
Remarks
WM_PAINT消息由系统产生, 而不能由应用程序SendMessage!!
强迫一个窗口绘制 一个dc, 要使用WM_PRINT, WM_PRINTCLIENT消息。注意:这需要目标窗口支持WM_PRINTCLIENT消息。 多数控件支持WM_PRINTCLIENT消息。
DefWindowProc使得更新区域无效。 如果你要重绘Frame框架发送WM_NCPAINT, 如果你要重绘背景发送WM_ERASEBKGND.
系统只有当 应用程序的消息队列中 没有其他消息的时候 才发送该消息。
DispatchMessage决定 where to send the message.
GetMessage决定哪条消息被Dispatch.
当应用程序消息队列中没有其他消息的时候, GetMessage返回WM_PAINT, DispatchMessage传送WM_PAINT到适当的窗口过程。
一个窗口可能接收内部PAINT消息,作为设置RDW_INTERNALPAINT标识的RedrawWindow的结果, 但这样可能没有更新区域, 一个应用程序需要调用GetUpdateRect来决定是否有update区域。 如果GetUpdateRect返回0, 则应用程序不应该调用BeginPaint和EndPaint。//内部重绘区域
应用程序 必须 检查任何可能的内部painting, 通过查看WM_PAINT的内部数据结构, 因为WM_PAINT消息可能由non-NULL update区域和 RedrawWindow两种方法引起。
系统对于内部WM_PAINT消息只发送一次。 当GetMessage, PeekMessage或UpdateWindow调用了WM_PAINT,
系统not post or send further WM_PAINT messages until the window is invalidated or until RedrawWindow is called again with the RDW_INTERNALPAINT flag set.
对于一些普通控件, WM_PAINT的wParam记录着用来绘制的DC句柄。