CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

已经得到窗口句柄,如何得到菜单句柄?

楼主sdksdksdk(12345)2005-05-16 18:15:20 在 VC/MFC / 基础类 提问

如题。  
  我用SPY++得不到菜单句柄,用GetMenu将窗口句柄传入也得不到。如果得到的话,我怎样才能遍历菜单中的各项?  
  问题点数:20、回复次数:13Top

1 楼krh2001(边城浪子)回复于 2005-05-16 18:25:10 得分 18

GetMenu   怎么会不行??  
  HMENU   hMenu=   GetMenu(hWnd);  
   
   
  //   遍历菜单:  
  EnumMenuItem(hMenu);  
   
  void   EnumMenuItem(HMENU   hMenu)  
  {  
      int   count   =   GetMenuItemCount(hMenu);  
      for(int   i   =   0;   i   <   count;   ++i)  
      {  
          MENUITEMINFO     mii;  
          MemoryZero(&mii,   sizeof(mii));  
          mii.cbSize   =   sizeof(mii);  
          mii.fMask   =   MIIM_BITMAP|MIIM_CHECKMARKS|MIIM_DATA|MIIM_FTYPE|MIIM_ID|MIIM_STATE|MIIM_STRING|MIIM_SUBMENU|MIIM_TYPE;     //   想读什么,就设什么标志  
          GetMenuItemInfo(hMenu,   i,   TRUE,   &mii);  
          if(mii.hSubMenu   !=   NULL)     //   子菜单  
          EnumMenuItem(mii.hSubMenu);  
      }  
  }  
   
  Top

2 楼sdksdksdk(12345)回复于 2005-05-16 18:39:06 得分 0

我通过GetMenu(HWND   hWnd)返回的是NULL,   没有办法再EnumMenuItem,我没有看错。  
  或者我不应该传入程序的主窗口?而应该是其他窗口?Top

3 楼dongmenzi(东门子)回复于 2005-05-17 08:46:29 得分 0

这个问题值得研究。Top

4 楼koko1998(高价购买火车票)回复于 2005-05-17 09:24:15 得分 0

markTop

5 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-05-17 09:24:39 得分 0

传入含菜单的窗口  
  用Spy++看Menu   Handle有值  
  Top

6 楼fbmsf(FBM)回复于 2005-05-17 09:31:03 得分 2

我想的两种可能:  
  1   窗口没有菜单。  
  2   传如的是子窗口handleTop

7 楼sdksdksdk(12345)回复于 2005-05-17 09:34:33 得分 0

用spy++是可以看到Menu   Handle,但窗口是主程序的窗口,而Menu   Handle用GetMenu(主窗口Handle)返回是NULL.Top

8 楼OpenHero(开勇)回复于 2005-05-17 09:40:45 得分 0

看你输入的Menu   Handle是否正确Top

9 楼sdksdksdk(12345)回复于 2005-05-17 09:45:51 得分 0

现在的问题是,我在程序中应该怎么Get   Menu   Handle,来这个Handle都得不到,我怎么验证呀?Top

10 楼krh2001(边城浪子)回复于 2005-05-17 11:28:31 得分 0

关键是,你的主窗口有   菜单   吗?   如果有的话,   一定可能得到,除非系统也出毛病了(不在讨论之列)  
  Top

11 楼sdksdksdk(12345)回复于 2005-05-17 12:55:06 得分 0

spy++不能把我的MENU从主窗口分离出来,我是在spy++通过监视消息发送才得到Menu   Handle的。而且我发现Menu   Handle所属的窗口handle也不是主窗口的。   而且这个MenuHandle所属窗口的Handle还会每次变化,郁闷中……Top

12 楼smartcomplier(坚强的泡沫)回复于 2005-05-17 13:19:18 得分 0

HMENU   hMenu   =   GetMenu(hwnd);Top

13 楼sdksdksdk(12345)回复于 2005-05-17 16:08:09 得分 0

我能否通过Menu项的名字得到相应的id号呢?Top

相关问题

  • 如何得到指定窗口句柄?
  • 怎样得到DOS窗口的句柄
  • 从窗口句柄得到背景色
  • 得到当前Dos窗口的句柄
  • 请问如何得到文本框右健菜单的句柄
  • 怎样从实例句柄HINSTANCE得到主窗口的句柄HWND,或者是任一窗口句柄也可。
  • 能不能通过进程句柄得到进程的窗口句柄?
  • 怎么样从进程句柄得到它对应的窗口的句柄????
  • 窗口句柄
  • 窗口句柄

关键词

  • 句柄
  • 菜单
  • hmenu
  • enummenuitem
  • 遍历
  • 得到
  • getmenu
  • 得不到

得分解答快速导航

  • 帖主:sdksdksdk
  • krh2001
  • fbmsf

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo