WM_CLOSE和SC_CLOSE之间的区别

问题描述 投票:1回答:2

我只是想知道这两个消息传递常量之间的区别。在重写时,我应该在WndProc方法中使用哪一个,以处理关闭按钮消息。

.net winforms windows-messages
2个回答
3
投票

无论何时请求关闭窗口,WM_CLOSE都会作为窗口消息发送。

当用户按下“关闭”按钮(或从窗口的控制菜单中选择“关闭”)时,SC_CLOSE将作为WM_SYSCOMMAND消息的参数发送。

您监听哪一个取决于您试图拦截/处理的操作。


1
投票

根据msdn,SC_CLOSE是WM_SYSCOMMAND消息的wParam值之一。

当用户从“窗口”菜单(以前称为系统或控制菜单)中选择命令时,或者当用户选择最大化按钮,最小化按钮,恢复按钮或关闭按钮时,窗口会收到此消息。

WM_CLOSE本身就是一条信息。

作为窗口或应用程序应终止的信号发送。

因此,当窗口接收到带参数值SC_CLOSE的WM_SYSCOMMAND时,则可以关闭窗口(发送WM_CLOSE消息)。

UPDATE(如果你想让用户优雅地关闭窗口):应用程序可以在销毁窗口之前通过处理WM_CLOSE消息并仅在用户确认选择时调用DestroyWindow函数来提示用户进行确认。

顺便说一下,如果你使用C#,你可以处理FormClosing事件并在那里工作。如果你需要取消关闭,那么只需为事件参数设置e.Cancel = true

© www.soinside.com 2019 - 2024. All rights reserved.