如题,在程序中如何获得修改菜单的句柄并对其状态和菜单文字进行修改,最好有代码,谢谢!
高结贴率!

解决方案 »

  1.   

    //   CMainFrame::OnChangeFileMenu()   is   a   menu   command   handler   for   
    //   CMainFrame   class,   which   in   turn   is   a   CFrameWnd-derived   class.   
    //   It   modifies   the   File   menu   by   inserting,   removing   and   renaming   
    //   some   menu   items.   Other   operations   include   associating   a   context   
    //   help   id   and   setting   default   menu   item   to   the   File   menu.   
    //   CMainFrame   is   a   CFrameWnd-derived   class. 
    void   CMainFrame::OnChangeFileMenu()   

          //   Get   the   menu   from   the   application   window. 
          CMenu*   mmenu   =   GetMenu();       //   Look   for   "File "   menu. 
          int   pos   =   FindMenuItem(mmenu,   "&File "); 
          if   (pos   ==   -1) 
                return;       //   Remove   "New "   menu   item   from   the   File   menu. 
          CMenu*   submenu   =   mmenu-> GetSubMenu(pos); 
          pos   =   FindMenuItem(submenu,   "&New\tCtrl+N "); 
          if   (pos   >   -1) 
                submenu-> RemoveMenu(pos,   MF_BYPOSITION);       //   Look   for   "Open "   menu   item   from   the   File   menu.   Insert   a   new 
          //   menu   item   called   "Close "   right   after   the   "Open "   menu   item. 
          //   ID_CLOSEFILE   is   the   command   id   for   the   "Close "   menu   item. 
          pos   =   FindMenuItem(submenu,   "&Open...\tCtrl+O "); 
          if   (pos   >   -1) 
                submenu-> InsertMenu(pos   +   1,   MF_BYPOSITION,   ID_CLOSEFILE,   "&Close ");       //   Rename   menu   item   "Save "   to   "Save   Selection ". 
          pos   =   FindMenuItem(submenu,   "&Save\tCtrl+S "); 
          if   (pos   >   -1) 
          { 
                UINT   id   =   submenu-> GetMenuItemID(pos); 
                submenu-> ModifyMenu(id,   MF_BYCOMMAND,   id,   "&Save   Selection "); 
          }       //   Associate   a   context   help   ID   with   File   menu,   if   one   is   not   found. 
          //   ID_FILE_CONTEXT_HELPID   is   the   context   help   ID   for   the   File   menu 
          //   that   is   defined   in   resource   file.   
          if   (submenu-> GetMenuContextHelpId()   ==   0) 
                submenu-> SetMenuContextHelpId(ID_FILE_CONTEXT_HELPID);       //   Set   "Open "   menu   item   as   the   default   menu   item   for   the   File   menu,   
          //   if   one   is   not   found.   So,   when   a   user   double-clicks   the   File 
          //   menu,   the   system   sends   a   command   message   to   the   menu 's   owner   
          //   window   and   closes   the   menu   as   if   the   File\Open   command   item   had   
          //   been   chosen.   
          if   (submenu-> GetDefaultItem(GMDI_GOINTOPOPUPS,   TRUE)   ==   -1) 
          { 
                pos   =   FindMenuItem(submenu,   "&Open...\tCtrl+O "); 
                submenu-> SetDefaultItem(pos,   TRUE); 
          } 
    } //   FindMenuItem()   will   find   a   menu   item   string   from   the   specified 
    //   popup   menu   and   returns   its   position   (0-based)   in   the   specified   
    //   popup   menu.   It   returns   -1   if   no   such   menu   item   string   is   found. 
    int   FindMenuItem(CMenu*   Menu,   LPCTSTR   MenuString) 

          ASSERT(Menu); 
          ASSERT(::IsMenu(Menu-> GetSafeHmenu()));       int   count   =   Menu-> GetMenuItemCount(); 
          for   (int   i   =   0;   i   <   count;   i++) 
          { 
                CString   str; 
                if   (Menu-> GetMenuString(i,   str,   MF_BYPOSITION)   && 
                      (strcmp(str,   MenuString)   ==   0)) 
                      return   i; 
          }       return   -1; 
    }
      

  2.   


    我的CMenu *pMenu = GetMenu();返回的是NULL
      

  3.   


    [code=C/C++]
    CWnd*   pMain   =   AfxGetMainWnd(); 
    if   (pMain   !=   NULL) 
    {       CMenu*   pMenu   =   pMain-> GetMenu(); 
    }
    [/code]
      

  4.   


    还是空的我是在MDI文档中的主菜单后面添加了一个菜单,当点击一个菜单,另一个菜单的名称和状态会发生改变,就是这么简单,就一直没有实现。