有人知道窗口最大化时发送的WM_MESSAGE(通过在标题栏中按下最大化按钮,还是双击标题栏?)
是否有按下最大化按钮的窗口消息?
Win32 / C ++,谢谢。
答案 0 :(得分:2)
您在wParam中获得值为SIZE_MAXIMIZED的WM_SIZE消息
修改强>
@jamesdlin发表的评论称我关注WM_WINDOWPOSCHANGED文件,该文件指出(强调我的):
<强>说明强> 默认情况下,DefWindowProc函数将WM_SIZE和WM_MOVE消息发送到窗口。 如果应用程序在不调用DefWindowProc的情况下处理WM_WINDOWPOSCHANGED消息,则不会发送WM_SIZE和WM_MOVE消息。在WM_WINDOWPOSCHANGED消息期间执行任何移动或大小更改处理而不调用DefWindowProc更有效。
谢谢詹姆斯!
答案 1 :(得分:1)
我最近处理了这个问题,我确定的方法是检查IsZoomed
以回应WM_WINDOWPOSCHANGED
,将其结果与前一个结果进行比较以检测何时发生转换,然后转发WM_WINDOWPOSCHANGED
到默认窗口过程。
如果您完全控制应用程序中的消息处理,并且知道没有(并且永远不会)WM_WINDOWPOSCHANGED
处理程序抑制WM_MOVE
/ WM_SIZE
,然后您应该能够直接在WM_SIZE
处理程序中处理它,如jachguate's answer中所述。