win32建立弹出式菜单
2011-09-28 20:17 捣乱小子 阅读(676) 评论(0) 编辑 收藏 举报先秀一下MSDN中学到的语句:if any,中文翻译:如果有的话(做做笔记啦)。
在新建了一个菜单资源之后,将菜单的属性设置Popup属性为true。
先要加载菜单资源LoadMenu,接下来要在鼠标右键按下消息上显示弹出式菜单了TrackPopupMenu。查看了MSDN这个函数之前还是要利用另一个函数来获得子菜单的,
很明显要调用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 ;
更多请访问:http://daoluan.net