当用户从窗口菜单(也称为系统菜单或控制菜单)中选择命令或用户选择最大化按钮或最小化按钮时,窗口会收到此消息。
WM_SYSCOMMAND
uCmdType = wParam; //请求的系统命令类型
xPos = LOWORD(lParam); //水平位置,在屏幕坐标
yPos = HIWORD(lParam); //垂直位置,在屏幕坐标
参数
【uCmdType】
指定请求的系统命令的类型。这可以是以下值之一:
值 | 含义 |
SC_CLOSE | 关闭窗口。 |
SC_CONTEXTHELP | 将光标更改为带有指针的问号。如果用户然后在对话框中单击控件,则控件会接收到WM_HELP消息。 |
SC_DEFAULT | 选择默认项目;用户双击了窗口菜单。 |
SC_HOTKEY | 激活与应用程序指定的热键关联的窗口。【lParam的】的低位字标识要激活的窗口。 |
SC_HSCROLL | 水平滚动。 |
SC_KEYMENU | 由于击键而检索窗口菜单。 |
SC_MAXIMIZE(或SC_ZOOM) | 最大化窗口。 |
SC_MINIMIZE(或SC_ICON) | 最小化窗口。 |
SC_MONITORPOWER | 仅Windows 95:设置显示的状态。此命令支持具有省电功能的设备,如电池供电的个人计算机。 |
SC_MOUSEMENU | 通过鼠标点击获取窗口菜单。 |
SC_MOVE | 移动窗口。 |
SC_NEXTWINDOW | 移动到下一个窗口。 |
SC_PREVWINDOW | 移动到上一个窗口。 |
SC_RESTORE | 将窗口恢复到其正常位置和大小。 |
SC_SCREENSAVE | 执行SYSTEM.INI文件的[boot]部分中指定的屏幕保护程序。 |
SC_SIZE | 确定窗口大小 |
SC_TASKLIST | 执行或激活Windows任务管理器。 |
SC_VSCROLL | 垂直滚动 |
【XPOS】
如果使用鼠标选择了窗口菜单命令,则以屏幕坐标指定光标的水平位置。否则,不使用【XPOS】参数。
【yPos】
如果使用鼠标选择窗口菜单命令,则以屏幕坐标指定光标的垂直位置。如果使用系统加速器选择该命令,则此参数为-1,如果使用mnenomic,则为0。
返回值
处理此消息时,应用程序应返回零。
备注
DefWindowProc功能为上表中指定的预定义操作执行窗口菜单请求。
在WM_SYSCOMMAND消息中,【uCmdType】参数的四个低位位由Windows内部使用。为了在测试【uCmdType】的值时获得正确的结果,应用程序必须使用按位AND运算符将值0xFFF0与【uCmdType】值组合。
可以使用GetSystemMenu,AppendMenu,InsertMenu,ModifyMenu,InsertMenuItem和SetMenuItem功能修改窗口菜单中的菜单项。修改窗口菜单的应用程序必须处理WM_SYSCOMMAND消息。
通过将WM_SYSCOMMAND消息传递给DefWindowProc,应用程序可以随时执行任何系统命令。应用程序未处理的任何WM_SYSCOMMAND消息必须传递给DefWindowProc.应用程序添加的任何命令值必须由应用程序处理,不能传递给DefWindowProc.
定义为从窗口菜单中选择项目的加速键被转换为WM_SYSCOMMAND消息;所有其他加速键击被翻译成WM_COMMAND消息。
也可以看看
AppendMenu, DefWindowProc, GetSystemMenu, InsertMenu, ModifyMenu, WM_COMMAND