用CreateMenu创建了一个菜单hMenu,然后用AppendMenu添加了两个菜单项,使用GetMenuCount(hMenu),返回2,但是我用GetSubMeun(hMenu,1),却总是返回NULL,敢问高手门,这个函数到底怎么用啊?

解决方案 »

  1.   

    menu.GetSubMenu(0)->TrackPopupMenu(....);GetMenu(0)->GetSubMenu(1)->CheckMenuItem(...);
      

  2.   

    LZ要搞清楚子菜单(submenu)和菜单项(menuitem)的区别。你添加的是菜单项而不是子菜单。
      

  3.   

    GetSubMeun返回的是整个子菜单
    不是菜单项目
    显然你AppendMenu加的是菜单项
    你要用MF_POPUP添加子菜单
    这样GetSubMeun返回就不为0了
      

  4.   

    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);
    这就是原始代码,到底哪里有错误呢?
      

  5.   

    常见的主菜单中有“File”、“Edit”、“View”、“Help”这些都是子菜单,点击子菜单会显示出其下面的菜单项和子菜单,而不会产生事件。除了子菜单之外剩下的就是菜单项了。
      

  6.   

    要添加子菜单,应该先创建popup菜单,然后将该子菜单连接到你的菜单。
    使用CreatePopupMenu函数创建子菜单,AppendMenu时,指定MF_POPUP样式,将生成的子菜单句柄
    传给最后一个参数,MSDN里用的形参名字是lpszNewItem这样才能调用GetSubMenu,以获取对应的子菜单句柄顺便说聊聊子菜单和菜单项
    子菜单就是popup菜单,点了之后不会执行命令,而是弹出下一级菜单
    菜单项就是能够只是一定操作的命令,点了之后,会执行你的代码