win32建立弹出式菜单

先秀一下MSDN中学到的语句:if any,中文翻译:如果有的话(做做笔记啦)。

在新建了一个菜单资源之后,将菜单的属性设置Popup属性为true。

先要加载菜单资源LoadMenu,接下来要在鼠标右键按下消息上显示弹出式菜单了TrackPopupMenu。查看了MSDN这个函数之前还是要利用另一个函数来获得子菜单的,

hMenu

 [in] Handle to the shortcut menu to be displayed. The handle can be obtained by calling CreatePopupMenu to create a new shortcut menu, or by calling GetSubMenu to retrieve a handle to a submenu associated with an existing menu item.

 

很明显要调用GetSubMenu来获得submenu(子菜单)。

另外在关于鼠标消息lParam参数设置的是窗口坐标,而不是屏幕坐标,但是在TrackPopupMenu中所用到的坐标是屏幕坐标,所以要作转换。

关键代码如下:

     case WM_CREATE:
          hMenu = LoadMenu (hInst, szAppName) ;
		  hMenu = GetSubMenu (hMenu, 0) ;(获取第一个菜单项)
          return 0 ;

     case WM_RBUTTONUP:
          point.x = LOWORD (lParam) ;
          point.y = HIWORD (lParam) ;
          ClientToScreen (hwnd, &point) ;
          
          TrackPopupMenu (hMenu, TPM_RIGHTBUTTON, point.x, point.y, 
                          0, hwnd, NULL) ;
          return 0 ;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值