GetSubMenu()的问题

「已注销」 2008-03-20 12:43:09
用CreateMenu创建了一个菜单hMenu,然后用AppendMenu添加了两个菜单项,使用GetMenuCount(hMenu),返回2,但是我用GetSubMeun(hMenu,1),却总是返回NULL,敢问高手门,这个函数到底怎么用啊?
...全文
322 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
小猪瑞比 2008-03-20
  • 打赏
  • 举报
回复
menu.GetSubMenu(0)->TrackPopupMenu(....);

GetMenu(0)->GetSubMenu(1)->CheckMenuItem(...);
「已注销」 2008-03-20
  • 打赏
  • 举报
回复
多谢各位大侠!
liuyusong2356 2008-03-20
  • 打赏
  • 举报
回复
要添加子菜单,应该先创建popup菜单,然后将该子菜单连接到你的菜单。
使用CreatePopupMenu函数创建子菜单,AppendMenu时,指定MF_POPUP样式,将生成的子菜单句柄
传给最后一个参数,MSDN里用的形参名字是lpszNewItem

这样才能调用GetSubMenu,以获取对应的子菜单句柄

顺便说聊聊子菜单和菜单项
子菜单就是popup菜单,点了之后不会执行命令,而是弹出下一级菜单
菜单项就是能够只是一定操作的命令,点了之后,会执行你的代码
cnzdgs 2008-03-20
  • 打赏
  • 举报
回复
常见的主菜单中有“File”、“Edit”、“View”、“Help”这些都是子菜单,点击子菜单会显示出其下面的菜单项和子菜单,而不会产生事件。除了子菜单之外剩下的就是菜单项了。
「已注销」 2008-03-20
  • 打赏
  • 举报
回复
三楼的朋友,能不能说明一下子菜单和菜单项的区别呢,不是很清楚啊。
「已注销」 2008-03-20
  • 打赏
  • 举报
回复
hMenu=CreateMenu();
AppendMenu(hMenu,MF_POPUP,IDM_DRAW,L"Draw");
AppendMenu(hMenu,MF_POPUP,IDM_EDIT,L"Edit");
SetMenu(hWnd,hMenu);
DrawMenuBar(hWnd);
hSubMenu=GetSubMenu(hMenu,1);
这就是原始代码,到底哪里有错误呢?
yupengchen951124 2008-03-20
  • 打赏
  • 举报
回复
顶……
xiaoQ008 2008-03-20
  • 打赏
  • 举报
回复
GetSubMeun返回的是整个子菜单
不是菜单项目
显然你AppendMenu加的是菜单项
你要用MF_POPUP添加子菜单
这样GetSubMeun返回就不为0了
cnzdgs 2008-03-20
  • 打赏
  • 举报
回复
LZ要搞清楚子菜单(submenu)和菜单项(menuitem)的区别。你添加的是菜单项而不是子菜单。
shakaqrj 2008-03-20
  • 打赏
  • 举报
回复
你的代码呢?
看看

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧