一、系统菜单
1 执行从系统提供的窗口命令,例如最大化、关闭等命令。本质上和普通菜单一样,所以我们也可以在程序中使用这个菜单
2 系统菜单的使用
2.1 获取系统菜单
GetSystemMenu
HMENU GetSystemMenu(
HWND hWnd, //要获取的窗口句柄
BOOL bRevert; //获取重置标识
);
bRevert: TRUE 重置 FALSE 不重置
当为TRUE时 会将菜单重置成默认状态,并返回菜单句柄,为false菜单项不重置, 获取当前系统菜单的状态
2.2 修改系统菜单, 例如增加、 删除
AppendMenu
InsertMenu
比AppendMenu增加了一个插入菜单项的位置
RemoveMenu
删除菜单项
2.3 系统菜单的响应命令
系统菜单的响应命令,实在WM_SYSCOMMAND 中
WPARAm - LOWORD( wParam )为增加菜单的ID
二、右键菜单
1 当在窗口点击右键时,弹出的菜单。
2 右键菜单的使用
2.1 创建菜单
CreatePopMenu
2.2 菜单增加
AppendMenu / InsertMenu
2.3 菜单的显示
TrackPopupMenu
BOOL TrackPopupMenu( HMENU hMenu, // handle to shortcut menu UINT uFlags, // options int x, // horizontal position int y, // vertical position int nReserved, // reserved, must be zero HWND hWnd, // handle to owner window CONST RECT *prcRect // ignored );
2.4 菜单的命令处理
WM_COMMAND
2.5 使用右键菜单的位置
2.5.1 WM_RBUTTONUP中添加菜单的创建和显示
右键消息坐标转换成屏幕坐标使用 - ClientToScreen
2.5.2 WM_CONTEXTMENU
用于显示右键的菜单的消息
WPARAM - 右键抬起时对应的窗口句柄
LPARAM - 右键抬起时的屏幕坐标
2.5.3 WM_RBUTTONUP 和 WM_CONTEXTMENU对比
1) 坐标系不同,WM_RBUTTONUP 客户区坐标 WM_CONTEXTMENU 屏幕坐标
2)WM_RBUTTONUP 先于 WM_CONTEXTMENU执行
Win32 Windows编程 八,布布扣,bubuko.com
原文:http://blog.csdn.net/ctxbloger/article/details/37650081