上下文菜单
上下文菜单就是常见的右键菜单(弹出式菜单)。
- 显示上下文菜单,阻塞函数
BOOL TrackPopupMenu(
HMENU hMenu, //菜单句柄
UINT uFlags, //显示方式
int x, //水平位置,屏幕坐标系
int y, //垂直位置,屏幕坐标系
UINT nReserved, //保留,必须为0
HWND hWnd, //处理菜单消息的窗口句柄
const RECT *prcRect //定义菜单的显示区域,通常设置为NULL,忽略即可
);
- 返回值
如果用户选择了菜单项,返回所选菜单项的ID。如果未选择菜单项或发生错误,返回0。
从上图可以看出,使用WM_RBUTTONUP鼠标右键弹起消息来制作右键菜单是不专业的,当然也有方法将客户区坐标系改为屏幕坐标系,这里我们直接讲更好的消息
WM_CONTEXTMENU
定义
- 用于通知窗口用户希望显示上下文菜单
- WM_CONTEXTMENU消息是在WM_RBUTTONUP消息之后产生
功能
WM_CONTEXTMENU消息在以下情况下被发送:
- 用户在窗口中右键单击鼠标。
- 用户按下Shift+F10键。
- 用户按下应用程序键(某些键盘上可用)。
该消息的主要作用是请求显示与当前上下文相关的菜单。
参数
- wParam: 包含用户右键单击的窗口的句柄。这可以是接收消息的窗口的子窗口。
- lParam: 包含鼠标光标的坐标信息:
- 低位字表示鼠标单击时光标的水平位置(以屏幕坐标为单位)。
- 高位字表示鼠标单击时光标的垂直位置(以屏幕坐标为单位)。