我只是想知道这两个消息传递常量之间的区别。在覆盖时,我应该在WndProc
方法中使用哪一个来处理关闭按钮消息。
答案 0 :(得分:3)
WM_CLOSE
都会作为窗口消息发送。
SC_CLOSE
将作为WM_SYSCOMMAND
消息的参数发送。
您倾听哪一个取决于您试图拦截/处理的操作。
答案 1 :(得分:1)
根据msdn,SC_CLOSE是WM_SYSCOMMAND消息的wParam值之一。
当用户从中选择命令时,窗口会收到此消息 窗口菜单(以前称为系统或控制菜单)或何时 用户选择最大化按钮,最小化按钮,恢复按钮, 或关闭按钮。
WM_CLOSE本身就是一条消息。
作为窗口或应用程序终止的信号发送。
因此,当窗口接收到参数值为SC_CLOSE的WM_SYSCOMMAND时,则可以关闭窗口(发送WM_CLOSE消息)。
UPDATE(如果你想让用户优雅地关闭窗口): 在破坏窗口之前,应用程序可以通过处理WM_CLOSE消息并仅在用户确认选择时调用DestroyWindow函数来提示用户进行确认。
顺便说一句,如果您使用C#,您可以处理FormClosing
事件并在那里工作。如果您需要取消关闭,那么只需为事件参数设置e.Cancel = true
。