CMenu - Submenus
-
Weiß jemand, ob ich zu eimem dynamisch erzeugten Menu grundsätzlich ein Untermenü erstellen kann? Bei mir geht das anscheinend nicht..
CMenu myMenu; if(myMenu.LoadMenu(IDR_MYMENU)) { ... myMenu->AppendMenuW( MF_STRING, IDR_MYMENU, _T("Test")); int iCountTest = myMenu->GetMenuItemCount(); CMenu *pSubMenu = myMenu->GetSubMenu(iCountTest-1); // ^--- ist bei mir NULL,... kann ich mir so gar nicht erklären... ... }bin für jede Hilfe sehr dankbar...
-
Du mußt der Funktion auch sagen, daß sie ein SubMenü erzeugen soll. Dazu übergibst du als ersten Parameter
MF_STRING|MF_POPUPund als zweiten ein Handle auf das (vorher erzeugte) Untermenü.
-
ähm.. vielleicht hätte ich doch nicht soviel rauskürzen sollen.. oder ich habe Dich falsch verstanden.
Zum Untermenü erzeugen komme ich doch gar nicht erst, weil ich von GetSubMenu nen Nullpointer zurückbekomme.
im nächten Schritt wollte ich dann
pSubMenu->AppendMenu(..)machen.
-
Nein, du hast den ganzen Ansatz falsch herum aufgezogen - du benötigst ein Menü-Handle auf das Untermenü, um es in dein Menü einzuhängen (anstelle der ID - die brauchst du nur für "normale" Befehls-Items), und du mußt der Funktion erklären, daß sie ein SubMenü anlegen soll:
myMenu->AppendMenu(MF_STRING|MF_POPUP,::CreateMenu(),_T("Test")); // ^SubMenü ^Menü-Handle
-
Dankeschön, es geht jetzt
