Menu



  • Ich versuche die Menü in einen SDI Anwendung ein bissen steuern, und zwar will ich das beim Start der Anwendung nur einige Menüpunkte angezeigt werden sollen. Ich schreibe eine Methode abc in die

    CMenu *MainMenu, *pSubMenu;
    MainMenu = GetMenu();
    pSubMenu=MainMenu->GetSubMenu(0);
    pSubMenu->EnableMenuItem(ID_EDIT, MF_ENABLED/*MF_DISABLED*/);
    SetMenu(MainMenu);
    

    Sowas schreibe, dann rufe in OnNewDocument()
    Und kriege zwei Fehler bei compeiliren
    error C2660: 'GetMenu' : Funktion akzeptiert keine 0 Parameter
    error C2660: 'SetMenu' : Funktion akzeptiert keine 1 Parameter
    Ich bin aber nicht sicher ob ich es überhaupt gut mache, hat da jemand Erfahrung damit



  • Hi ich hab damit zwar noch keine Erfahrung aber versuchs mal so:

    // This example deletes the leftmost popup menu or leftmost
      // popup menu item from the application's main window.
      CWnd* pMain = AfxGetMainWnd();
    
      // The main window _can_ be NULL, so this code
      // doesn't ASSERT and actually tests.
      if (pMain != NULL)
      {
         // Get the main window's menu
         CMenu* pMenu = pMain->GetMenu();
         ...
         ...
         pMain->SetMenu(pMenu);
      }
    

    Ciao

    Stalin



  • So kriege ich zwar keinen Fehler aber es tut sich auch nichts 😢

    CWnd* pMainWnd = AfxGetMainWnd();
    
            if (pMainWnd != NULL)
            {           
                CMenu* pMenu = pMainWnd->GetMenu();
                pMenu->EnableMenuItem( ID_START, MF_ENABLED );   
                pMainWnd->DrawMenuBar();
                pMainWnd->SetMenu(pMenu);
            }
    

    vieleich sollte ich das ganze im MainFrm machen



  • Stichwort:
    ON_UPDATE_COMMAND_UI



  • Schon klar, geht es aber nicht ohne dh. Beim Starten will ich schon fest legen was ist aktiv und was nicht ohne 50 ON_UPDATE_COMMAND_UI zu deklarieren



  • Nein, denn sobald Du einen ON_COMMAND-Handler für ein Menuitem eingefügt hast, wird es automatisch enabled !


Anmelden zum Antworten