CMenu p;
p.CreateMenu();
CMenu pop;
pop.CreatePopupMenu();
pop.AppendMenu(MF_STRING,ID_NEW,"NEW");
pop.AppendMenu(MF_STRING,ID_OPEN,"OPEN");
p.AppendMenu(MF_POPUP,(UINT)pop.Detach(),"FILE");
我想在OPEN这里再建个层叠菜单(子菜单),也就是鼠标移到OPEN那里右边就再出现OPEN下的子菜单。

解决方案 »

  1.   

    用GetSubMenu()得到菜单项的指针
    再用InsertMenu()插入子菜单
    再用DrawMenuBar()重画菜单。
      

  2.   

    CMenu *ps=p.GetSubMenu();
    ps->ModifyMenu(ID_OPEN,MF_BYCOMMAND|MF_POPUP,(UINT)otherpop.Detach(),"OPEN");
      

  3.   

    刚才错了应该是
    CMenu *ps=p.GetSubMenu(0);
    ps->ModifyMenu(ID_OPEN,MF_BYCOMMAND|MF_POPUP,(UINT)otherpop.Detach(),"OPEN");
      

  4.   

    谢谢楼上的,搞定了,不过
    MF_BYCOMMAND|MF_POPUP
    这个MF_BYCOMMAND是表示什么?干什么用的。
      

  5.   

    MF_BYCOMMAND表示按菜单ID处理
    对应的是MF_POSITION表示按子菜单的位置(0,1,2,3...)