GetMenuItemInfo & InsertMenuItem 枚举和追加菜单操作

原创 2017年05月02日 09:22:09



int _AppendMenuOp(HMENU hDst, HMENU hSrc)
{
  int iCnt = 0;
  
  ASSERT(hDst && hSrc);

  for(int iSrc=0, iDst=GetMenuItemCount(hDst); iSrc<GetMenuItemCount(hSrc); iSrc++)
  {
    TCHAR szMenuStr[256] = {0};
    MENUITEMINFO mInfo = {0};
    mInfo.cbSize = sizeof(mInfo);
    mInfo.fMask = 0
      | MIIM_CHECKMARKS //Retrieves or sets the hbmpChecked and hbmpUnchecked members. 
      | MIIM_DATA //Retrieves or sets the dwItemData member. 
      | MIIM_ID //Retrieves or sets the wID member. 
      | MIIM_STATE //Retrieves or sets the fState member. 
      | MIIM_SUBMENU //Retrieves or sets the hSubMenu member. 
      | MIIM_TYPE //Retrieves or sets the fType and dwTypeData members. 
      | 0;
    mInfo.dwTypeData = szMenuStr;
    mInfo.cch = _countof(szMenuStr);

    VERIFY(GetMenuItemInfo(hSrc, iSrc, TRUE, &mInfo));

    if(mInfo.hSubMenu)
    {
      HMENU hSub = CreatePopupMenu();
      _AppendMenuOp(hSub, mInfo.hSubMenu);
      mInfo.hSubMenu = hSub;                    
    }

    InsertMenuItem(hDst, iDst++, TRUE,  &mInfo);
    iCnt++;
  }

  return iCnt;
}

void CDlg3Dlg::OnContextMenu(CWnd* pWnd, CPoint point) 
{
  // TODO: Add your message handler code here
  CMenu m1,m2, pm;
  m1.LoadMenu(IDR_MENU1);
  m2.LoadMenu(IDR_MENU2);

  pm.CreatePopupMenu();
  _AppendMenuOp(pm.m_hMenu, m1.m_hMenu);
  pm.AppendMenu(MF_SEPARATOR, 0, _T(""));
  _AppendMenuOp(pm.m_hMenu, m2.m_hMenu);
 
  pm.TrackPopupMenu(0, point.x, point.y, this);

}


Windows API 功能详解

 Windows API 功能详解  1.API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络...

构造MENUITEMINFO 使用InsertMenuItem给菜单插入图片

MENUITEMINFO MenuInfo = {0}; MenuInfo.cbSize = sizeof(MENUITEMINFO); MenuInfo.fMask = MIIM_ID | ...
  • zgl7903
  • zgl7903
  • 2009年12月11日 20:13
  • 2024

菜单枚举记

菜单枚举记 有一MDI应用程序,现假设要枚举出其能够得到系统命令响应所有菜单项的内容:如命令ID,资源名称,所在(子)菜单的句柄等,并对之进行操作。本文对此略述一二,未达意处,望各位海涵之外,以我之深...

WIN&nbsp;C++&nbsp;API

Windows C++ API函数大全 1. API之网络函数   WNetAddConnection 创建同一个网络资源的永久性连接   WNetAddConnection2 创建同一个网络资源的...

Windows API 功能详解

Windows API 功能详解 1.API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资...

一些API函数集

Windows API1.控件与消息函数 AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 AnyPopup 判断屏幕上是否存在任何弹出式窗口 ArrangeI...
  • xu123
  • xu123
  • 2005年02月25日 12:27
  • 1029

why item.getMenuInfo() is null?

0down vote getMenuInfo() will work on ListAdapter, not on views. But, You can pass additional ...

MENUITEMINFO结构体说明

 声明:转载此文档时请注意转载来源和我的名字,本人水平有限翻译有误处请指出 MENUITEMINFO结构包含关于一个菜单项信息typedef struct tagMENUITEMINFO {    U...

Cmenu类方法判断弹出按钮选中状态并做相应处理

此方法实现每次点击菜单项时,使其选中的菜单项,打√标记,并设置到Disable状态. 在菜单项的响应函数中调用,形参传递对应的ID即可!   CMenu* pSubMenu=NULL; UIN...

Programming on Winodows with Python (I) -- Get/Set window property

最近想编写一个植物大战僵尸中控制玉米大炮自动发射的小工具,研究了一下Python下的windows API,部分资料整理如下: Help on module win32gui:   ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GetMenuItemInfo & InsertMenuItem 枚举和追加菜单操作
举报原因:
原因补充:

(最多只允许输入30个字)