如何检测窗口已经最大化?

时间:2012-11-21 02:01:45

标签: c++ winapi visual-c++

有人知道窗口最大化时发送的WM_MESSAGE(通过在标题栏中按下最大化按钮,还是双击标题栏?)

是否有按下最大化按钮的窗口消息?

Win32 / C ++,谢谢。

2 个答案:

答案 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中所述。