WM_CLOSE和SC_CLOSE的区别(Difference between WM_CLOSE a

2019-09-26 02:34发布

我只是想知道的是这两个消息常数之间的差异。 在我应该使用哪一个WndProc重写时方法,来处理关闭的消息。

Answer 1:

WM_CLOSE被发送作为每当请求窗口以通过任何方式被关闭,窗口消息。

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

哪一个你听的是你试图拦截/交易与行动(S)来确定。



Answer 2:

根据MSDN,SC_CLOSE是wParam参数值中的一个WM_SYSCOMMAND消息。

一个窗口接收当用户从窗口菜单中选择一个命令该消息(前身为系统或控制菜单)时,或者当用户选择最大化按钮,最小化按钮,恢复按钮,或关闭按钮。

WM_CLOSE是消息本身。

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

所以,当窗口收到与参数值SC_CLOSE WM_SYSCOMMAND,那么你就可以关闭窗口(发送WM_CLOSE消息)。

UPDATE(如果你想要让用户从容关闭窗口):应用程序可以提示用户确认之前,摧毁一个窗口,通过处理WM_CLOSE消息,并呼吁只有当用户确认选择的功能的DestroyWindow。

顺便说一句,如果您使用C#,您可以处理FormClosing事件,你在那里工作。 如果您需要取消关闭,那么就设置e.Cancel = true事件的说法。



文章来源: Difference between WM_CLOSE and SC_CLOSE