WM_SYSCOMMAND

【勇芳软件工作室】汉化HomePreviousNext

当用户从窗口菜单(也称为系统菜单或控制菜单)中选择命令或用户选择最大化按钮或最小化按钮时,窗口会收到此消息。

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】值组合。

可以使用GetSystemMenuAppendMenuInsertMenuModifyMenuInsertMenuItemSetMenuItem功能修改窗口菜单中的菜单项。修改窗口菜单的应用程序必须处理WM_SYSCOMMAND消息。

通过将WM_SYSCOMMAND消息传递给DefWindowProc,应用程序可以随时执行任何系统命令。应用程序未处理的任何WM_SYSCOMMAND消息必须传递给DefWindowProc.应用程序添加的任何命令值必须由应用程序处理,不能传递给DefWindowProc.

定义为从窗口菜单中选择项目的加速键被转换为WM_SYSCOMMAND消息;所有其他加速键击被翻译成WM_COMMAND消息。

也可以看看

AppendMenu, DefWindowProc, GetSystemMenu, InsertMenu, ModifyMenu, WM_COMMAND