Ermitteln der Einträge eines Menüs



  • Hi,

    Gibt es eine Möglichkeit alle IDC Einträge eines Menüs auszulesen und dann ggf. zu deaktivieren?
    Danke



  • Ich versuche das ganze so:

    int ncount;
    	int nitem;
    	int i;
    	//CMenu *m_pFileMenu=(CMenu*) LoadMenu(IDR_MENU_REMOTELIST);
    	m_pFileMenu->LoadMenu(IDR_MENU_REMOTELIST);
    	ncount=m_pFileMenu->GetMenuItemCount();
    	for (i=0; i < ncount; i++)
    	{
    		nitem=m_pFileMenu->GetMenuItemID(i);
    		m_pFileMenu->EnableMenuItem(i,MF_GRAYED);
    	}
    

    Bei der Zeile:
    m_pFileMenu->LoadMenu(IDR_MENU_REMOTELIST);
    bekomme ich eine exception:
    BOOL CMenu::Attach(HMENU hMenu)
    {
    ASSERT(m_hMenu == NULL); // only attach once, detach on destroy
    if (hMenu == NULL)
    return FALSE;
    CHandleMap* pMap = afxMapHMENU(TRUE); // create map if not exist
    ASSERT(pMap != NULL);
    pMap->SetPermanent(m_hMenu = hMenu, this);
    return TRUE;
    }

    Woran liegt das?



  • Also ich darf anscheinend kein Pointer auf das menu setzen.
    Ich mache das jetzt so:

    int ncount;
    	int nitem;
    	int i;
    	int x;
    
    	CMenu FileMenu;
    	CMenu *pFileMenuSub;
    
    	FileMenu.LoadMenu(IDR_MENU_REMOTELIST);
    	pFileMenuSub=FileMenu.GetSubMenu(0);
    
    	ncount=pFileMenuSub->GetMenuItemCount();
    	for (i=0; i < ncount; i++)
    	{
    		nitem=pFileMenuSub->GetMenuItemID(i);
    		pFileMenuSub->EnableMenuItem(ID_RFPARENTDIR,MF_BYCOMMAND | MF_GRAYED);
    	}
    

    In der Schleife bekomme ich auch schön die ids von allen 5 items.
    Nur leider werden diese nicht deaktiviert.
    Hab schon alles mit MF_BYPOSITON und MF_BYCOMMAND und MF_DISABLED versucht, doch leider werden die Items nicht deaktiviert.
    Woran kann das liegen?
    Danke



  • Hab den Fehler,
    war keine Membervariable.


Anmelden zum Antworten