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.