1.当WinMain函数调用CreateWindow时,窗口过程收到WM_CREATE消息,而第一条WM_SIZE消息就发生在那之后(准确的说是WinMain调用ShowWindow函数时)【相关应用汇总:因此①可以在窗口过程的WM_SIZE处理中获取字体的高度和宽度;②可以获取窗口(客户区)的宽度和高度(59页和81页有WM_SIZE相应lParam变量的解释);③可以对滚动条进行诸如SetScrollInfo的初始化工作】。 ——《Windows程序设计》82页
另:在许多Windows程序这个I报告,WM_SIZE消息后经常会有一个WM_PAINT消息。因为定义窗口类时,通常指定了如下的窗口风格:
CS_HREDRAW | CS_VREDRAW
它告诉Windows在窗口水平或垂直尺寸变化时强制重绘
2.“Sent to a window after its size has changed.” 【相关应用汇总:因此①在WndProc处理WM_SIZE消息的时候设定滚动条的范围相对于在WM_CREATE中更合适(客户区大小改变后,滚动条页需要做出相应调整),例如SetScrollInfo的使用;②缩放编辑控件的动作也应该放在此处,除以上原因以外,还因为此动作需要获取客户区大小,因此需要WM_SIZE的lParam】 ——更多信息参见MSDN,链接如下:
http://msdn.microsoft.com/zh-cn/library/ms632646(v=vs.100)
或
http://msdn.microsoft.com/en-us/library/windows/desktop/ms632646(v=vs.85).aspx
3.
_________________________________________________________________________________
WM_PAINT
至于WM_PAINT消息的触发事件,在《Windows程序设计(第5版)珍藏版》第64页有一个列表,另外,第56页的WM_PAINT消息做了一个系统的阐述。摘要如下:
WM_PAINT是WndProc处理的第二条消息(第一条是WM_CREATE),这条消息在Windows编程中极其重要。当窗口的客户区部分或者全部“无效”且必须“更新”时,应用程序将得到此消息。
当窗口首次被创建时,整个客户区都是无效的,因为此时应用程序尚未在该窗口上绘制任何东西。第一条WM_PAINT消息(通常在应用程序调用WinMain中的UpdateWindow时出现)将指示窗口过程在窗口客户区进行绘制。
_________________________________________________________________________________
2013-06-10
WM_VSCROLL或WM_HSCROLL
当用户单机滚动条或者拖动滑块时,Windows向窗口过程发送WM_VSCROLL或WM_HSCROLL消息。在滚动条上的任何鼠标动作会产生至少两条消息:一条在鼠标按下时,另一条在鼠标松开时。
Windows will not change the posit ion of the scroll bar thumb. Your applicat ion does that by calling SetScrollPos .
——《Windows程序设计》85页