Windows程序中什么事件发生时,窗口过程会收到一条WM_SIZE消息

  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页

原文地址:https://www.cnblogs.com/tingshuixuan2012/p/3112046.html