毕业论文

当前位置: 毕业论文 > 范文 >

trackpopupmenu菜单空白不显示菜单

时间:2021-03-10 12:50来源:辣文论文
trackpopupmenu菜单空白不显示菜单 基本上解决方法就是先GetSubMenu,再TrackPopupMenu, 两种方法,一种就是在菜单资源里把所要加载的资源放到一个Popup属性的菜单下面, 另外就是程序创建一

trackpopupmenu菜单空白不显示菜单 基本上解决方法就是先GetSubMenu,再TrackPopupMenu,

两种方法,一种就是在菜单资源里把所要加载的资源放到一个Popup属性的菜单下面,

另外就是程序创建一个Popup菜单,把菜单资源附加到这个Popup菜单上,再从Popup菜单中GetSubMenu(0)  取得需要的菜单

  case WM_CONTEXTMENU:

    {

      HWND hWnd = (HWND)wParam; //窗口句柄

      int xPos = GET_X_LPARAM(lParam);  //鼠标X屏幕坐标

      int yPos = GET_Y_LPARAM(lParam);  //鼠标Y屏幕坐标

 

      HMENU hMenu = CreatePopupMenu();  //创建弹出式菜单

      HMENU hSrcMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDC_TESTWIN32)); //加载菜单资源

      AppendMenu(hMenu, MF_POPUP, (UINT_PTR)hSrcMenu, _T("Popup")); //附加到弹出菜单

      HMENU hTackMenu = GetSubMenu(hMenu, 0); //取出目标菜单

      TrackPopupMenuEx(hTackMenu, 0, xPos, yPos, hWnd, NULL); //弹出菜单

      DestroyMenu(hSrcMenu); //销毁加载的菜单

      DestroyMenu(hMenu); //销毁弹出菜单

 

      break;

    }
如果你写一个win32程序,你想在某个条目上鼠标右键,弹出一个简单的菜单,该菜单就有一个选项。

那么,你不用费很大的力气去设计这个菜单,也不需要写一个xml等,你只需要使用TrackPopupMenu函数来实现这个简单的梦想。

msdn是这样描述的:

Displays a shortcut menu at the specified location and tracks the selection of items on the menu. The shortcut menu can appear anywhere on the screen.

看到了吧,是一个shortcut菜单,更重要的是可以展示在屏幕的任何位置,只要你愿意。这时候,你应该迫不及待看看函数语法了吧:

 

BOOL WINAPI TrackPopupMenu(

  _In_           HMENU hMenu,

  _In_           UINT  uFlags,

  _In_           int   x,

  _In_           int   y,

  _In_           int   nReserved,

  _In_           HWND  hWnd,

  _In_opt_ const RECT  *prcRect

);

各个参数又是什么意思:

hMenu:被显示的快捷菜单的句柄。此句柄可为调用CreatePopupMenu创建的新快捷菜单的句柄,也可以为调用GetSubMenu取得的与一个已存在菜单项相联系的子菜单的句柄。

uFlags:一种指定功能选项的位标志。用下列标志位之一来确定函数如何水平放置快捷菜单:

TPM_CENTERALIGN:若设置此标志,函数将按参数x指定的坐标水平居中放置快捷菜单。

TPM_LEFTALIGN:若设置此标志,函数使快捷菜单的左边界与由参数X指定的坐标对齐。

TPM_RIGHTALIGN:若设置此标志,函数使快捷菜单的右边界与由参数X指定的坐标对齐。

用下列标志位之一来确定函数如何垂直放置快捷菜单:

TPM_BOTTOMALIGN:若设置此标志,函数使快捷菜单的下边界与由参数y指定的坐标对齐。

TPM_TOPALIGN:若设置此标志,函数使快捷菜单的上边界与由参数y指定的坐标对齐。

TPM_VCENTERALIGN;若设置此标志,函数将按参数y指定的坐标垂直居中放置快捷菜单

用下列标志位之一来确定在菜单没有父窗口的情况下用户的选择: trackpopupmenu菜单空白不显示菜单:http://www.751com.cn/fanwen/lunwen_71177.html

------分隔线----------------------------
推荐内容