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