Menubar ändern
-
Also als MenuBar ist ein Menu mit Submenu alles erstellt. Ich will jetzt das 1 Submenu komplett durch ein neues austauschen, welches ich aber erst zur Laufzeit definiere.
Da hab ich zu allererst das Submenu zerstört pSubMenu->Destroy();
ich denk mal das ist ok und dann erzeug ich ein neues (weiss nicht ob ich hier noch speicher erzeugen muss)...ja weiss nicht wie ich die neuen inhalte nun an das Hauptmenu ranhänge (es gibt ja kein SetSubMenu(int nPos, CMenu*) oder so...
Mit
SetMenu(pSubMenu); // <- Main Menü wird gesetzt.
wird das Hauptmenu auch nicht ersetze - es passiert einfach gar nix ausser das ich keinen Zugriff auf das erste Untermenu mehr hab.
also meine frage bleibt, wie definier ich denn ein submenu im code richtig und wie weise ich das dem hauptmenu vernünftig zu??
-
Kleines Beispiel das ein Menü anhängt
CMenu *pMenu = AfxGetMainWnd()->GetMenu(); // Menü holen CMenu *pSubMenu = new CMenu(); // Menü erstellen // Submenü erstellen pSubMenu->CreateMenu(); pSubMenu->AppendMenu(MF_STRING,ID_VIEW_TOOLBAR,"Test 1"); pSubMenu->AppendMenu(MF_STRING,ID_VIEW_TOOLBAR,"Test 2"); // Submenü anhängen pMenu->AppendMenu(MF_POPUP,(UINT)pSubMenu->m_hMenu,"Top Menü Punkt"); DrawMenuBar();
-
MainFrm.obj : error LNK2019: unresolved external symbol "public: void __cdecl CWnd::DrawMenuBar(void)" (?DrawMenuBar@CWnd@@QAAXXZ) referenced in function "public: void __cdecl CMainFrame::RefreshMenu(void)" (?RefreshMenu@CMainFrame@@QAAXXZ)
uhhh... der Link-Error kommt bei DrawMenuBar();
(embedded VC++)
-
Rio1 schrieb:
(embedded VC++)
Mit embedded kenne ich mich gar nicht aus, sorry. Im normalen VC++ funktioniert dies...
-
ja das ist identisch in vielen sachen mit der VC++ umgebung. Es gibt auch eine DrawMenuBar(); Funktion. gibts nicht einen anderen weg das menubar neu zu zeichnen?
-
Vielleicht über Invalidate oder InvalidateRect
-
ne ändert nichts. vorallem wird am Menu (Hauptmenu) nie was geändert egal was ich mache. z.b. pMenu->DeleteMenu(0,MF_BYPOSITION) - ändert auch nix.
-
Rio1 schrieb:
ne ändert nichts. vorallem wird am Menu (Hauptmenu) nie was geändert egal was ich mache. z.b. pMenu->DeleteMenu(0,MF_BYPOSITION) - ändert auch nix.
Dies liegt wahrscheinlich daran das die Menüleiste neu gezeichnet werden muss.
-
ohh ich seh grad, dass die Instanz mit der ich das Menubar erzeuge von der Klasse CCeCommandBar ist, und die enthält auch ein DrawMenuBar(int nButton);
nButton - Specifies the zero-based index of the menu bar within the command bar
?? aber mal probieren.
tja ändert auch nix bei nButton = 0;
-
hier der junge mensch hat vor einem jahr die selben probleme:
http://www.eggheadcafe.com/forumarchives/pocketpcdevelopernetworking/Nov2005/post24149416.asp
-
also mit m_wndCommandBar.DrawMenuBar(int nButton) lieg ich schon richtig.
ich glaub der nButton stimmt noch nicht.
Ich weiss nicht was für nButton da angegeben werden soll.
wenns alles i.O. laufen sollte, wird ein TRUE zurückgegeben werden.
Bei mir kommt immer FALSE als Ergebnis (egal was ich mache)
-
hier ich hab hier noch was gefunden, aber konnt noch nicht allzuviel damit anfangen:
http://www.pocketpcdn.com/articles/cmdbar_menu.html
http://www.pocketpcdn.com/forum/viewtopic.php?t=355
http://www.pocketpcrussia.com/7933-4.htmirgendwie wird bei CCeCommandbar das Menu nur durch Buttons einer Toolbar simuliert. Mhhh... wenn wer dazu noch ein Plan hat.
-
Also ich habs nun geschafft nach der Anleitung im russ. Forum (siehe obere antwort) den Text des ersten Button der Toolbar (weil das Hauptmenü des CCeCommandBar ist wohl nix anderes) zu ändern. Tja aber leider ist es mir noch nicht gelungen ein komplettes Submenu als Pop-UP daran nun auszutauschen/anzuhängen)
vielleicht hat wer noch eine idee?
Weiss jemand wie ich die Anzahl der vorhandenen Menueinträge eines SubMenüs ermitteln kann?