Win32 Windows编程 八

一、系统菜单

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执行


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值