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