我只想知道这两个消息传递常量之间有什么区别。覆盖时我应该在方法中使用哪一个WndProc
来处理关闭按钮消息。
问问题
14086 次
2 回答
4
WM_CLOSE
每当请求以任何方式关闭窗口时,都会作为窗口消息发送。
SC_CLOSE
WM_SYSCOMMAND
当用户按下关闭按钮(或从窗口的控制菜单中选择关闭)时,作为消息的参数发送。
你听哪一个取决于你试图拦截/处理的动作。
于 2012-04-11T07:48:48.733 回答
1
根据 msdn,SC_CLOSE 是WM_SYSCOMMAND消息的 wParam 值之一。
当用户从窗口菜单(以前称为系统或控制菜单)中选择命令或用户选择最大化按钮、最小化按钮、恢复按钮或关闭按钮时,窗口会收到此消息。
WM_CLOSE本身就是一条消息。
作为窗口或应用程序应该终止的信号发送。
因此,当窗口接收到参数值为 SC_CLOSE 的 WM_SYSCOMMAND 时,您可以关闭窗口(发送 WM_CLOSE 消息)。
更新(如果您想让用户优雅地关闭窗口):应用程序可以在销毁窗口之前提示用户确认,方法是处理 WM_CLOSE 消息并仅在用户确认选择时调用 DestroyWindow 函数。
顺便说一句,如果您使用 C#,您可以处理FormClosing
事件并在那里工作。如果您需要取消关闭,那么只需设置e.Cancel = true
事件参数。
于 2012-04-11T07:49:14.473 回答