zoukankan      html  css  js  c++  java
  • 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 ;
  • 相关阅读:
    hdu 1042 N!
    hdu 1002 A + B Problem II
    c++大数模板
    hdu 1004 Let the Balloon Rise
    hdu 4027 Can you answer these queries?
    poj 2823 Sliding Window
    hdu 3074 Multiply game
    hdu 1394 Minimum Inversion Number
    hdu 5199 Gunner
    九度oj 1521 二叉树的镜像
  • 原文地址:https://www.cnblogs.com/daoluanxiaozi/p/2194777.html
Copyright © 2011-2022 走看看