我只是想知道的是这两个消息常数之间的差异。 在我应该使用哪一个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