WM_CREATE消息。
MSDN的解释如下:
The
WM_CREATE message is sent when an application requests that a window be created by calling the
CreateWindowEx or
CreateWindow function. (The message is sent before the function returns.) The window procedure of the new window receives this message after the window is created, but before the window becomes visible
首先,你得认识到CreateWindow是一个函数,它一旦执行起来,就不是一个时间点,而是一个时间段,尽管时间很短。
那么我们说它执行以后窗口就建立起来了,并不是说它返回之前窗口就没有建立起来。很显然是在它执行的过程中的某个时刻,窗口已经建立,消息队列已经建立,然后再发送一个WM_CREATE给队列,最后再返回的。
WM_PAINT消息。
WndProc处理的第二个消息为WM_PAINT。这个消息在Windows程序设计中是很重要的。当窗口显示区域的一部分显示内容或者全部变为“无效”,以致于必须“更新画面”时,将由这个消息通知程序。
显示区域的显示内容怎么会变得无效呢?在最初建立窗口的时候,整个显示区域都是无效的,因为程序还没有在窗口上画什么东西。第一条WM_PAINT消息(通常发生在WinMain中调用UpdateWindow时)指示窗口消息处理程序在显示区域上画一些东西。在用户改变HELLOWIN窗口的大小后,显示区域的显示内容重新变得无效。wndclass结构的style字段设定为标志CS_HREDRAW和CS_VREDRAW,这样的格式设定指示Windows,在窗口大小改变后,就把整个窗口显示内容当成无效。然后,窗口消息处理程序将收到一条WM_PAINT消息。当用户将最小化,然后再次将窗口恢复为以前的大小时,Windows将不会保存显示区域的内容。在图形环境下,窗口显示区域涉及的数据量很大。因此,Windows令窗口无效,窗口消息处理程序接收一条WM_PAINT消息,并自动恢复其窗口的内容。在移动窗口以致其相互重叠时,Windows不保存一个窗口中被另一个窗口所遮盖的内容。在这一部分不再被遮盖之后,它就被标志为无效。窗口消息处理程序接收到一条WM_PAINT消息,以更新窗口的内容。