当用户在系统菜单上选择菜单项命令时,应用程序会收到WM_SYSCOMMAND消息,因此 wParam 可以是 SC_CLOSE、SC_CONTEXTHELP、SC_MAXIMIZE、SC_MINIMIZE、SC_RESTORE 等。这是合乎逻辑的。(当然您也可以通过单击最小化、最大化、关闭按钮等来发送这些消息。)
但是也可以发送 WM_SYSCOMMAND 消息来向 Windows Shell 发送命令。例如,可以显示开始菜单 (SC_TASKLIST)、激活屏幕保护程序 (SC_SCREENSAVE) 和关闭显示器 (SC_MONITORPOWER)。这没有意义,不是吗?这与应用程序的系统菜单有什么关系?这更像是一个“系统命令”,即更多的是对消息名称“WM_SYSCOMMAND”的完全不同的解释。这就像消息用于向系统发送命令请求一样。
为什么这条消息用于两个看似完全不同的东西,“SYSCOMMAND”这个名字指的是什么东西(系统菜单上的命令,或操作系统的命令)?