PopUP-Menü wird nur komisch angezeigt
-
Also über die WM_CONTEXTMENU Nachricht muss es ja nicht laufen, man kann es auch über die Nachricht WM_RBUTTONDOWN oder sowas laufen lassen, aber die Sache ist die, dass man nie ein ganzes Menu anzeigen lassen kann, sondern immer nur ein Submenu.
Grüssli
-
-
Und was ist jetzt, wenn man nicht möchte, dass die Taste auf dem Keyboard das Menü aufruft? Oder wenn das Menü nur über die Leertaste aufgerufen werden soll? Usw. usf.? Kenne das Tutorial schon und auch die Nachricht, nur ist sie nicht immer verbindlich und hilft bei der Lösung dieses Problem in diesem Thread absolut nichts!
Grüssli

-
hmm so richtig verstehe ich das noch net!
also ich lade mein menu IDR_MENU1 und dann?! also ich habs jetzt so versucht
wie es hier unten geposted ist, es ist aber genau wie vorher!!void CBTRO_test1Dlg::OnContextMenu(CWnd* pWnd, CPoint point) { POINT pt; GetCursorPos(&pt); CMenu test; test.LoadMenu(IDR_MENU1); CMenu *m_lMenu; m_lMenu=&test; m_lMenu->GetSubMenu(0); m_lMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, this, NULL); }
-
Kann es nicht sein, dass dein Kontextmenü nur deshalb so "komisch" dargestellt wird, weil es noch gar keinen Eintrag enthält? Sieht für mich ganz danach aus...
-
hmm also das müsste ich mmn. richtig erstellt haben?!
-
Mach mal den Haken "Als Kontextmenu anzeigen" raus.
Danach hast du einen grauen langen Balken, in dem stehen müsste "test hallo1 hallo2"
Mach zwei untereinträge in test --> das kannst du dann als kontexmenu aufrufen.
-
ne leider klappt das auch nicht :-|
der code zum aufrufen ist immernoch:
void CBTRO_test1Dlg::OnContextMenu(CWnd* pWnd, CPoint point) { POINT pt; GetCursorPos(&pt); CMenu test; test.LoadMenu(IDR_MENU1); CMenu *m_lMenu; m_lMenu=&test; m_lMenu->GetSubMenu(0); m_lMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, this, NULL); }und mein menü sieht nun so aus:
http://img115.imageshack.us/img115/8199/lol5en.jpgaber klappt halt immernoch nicht :-| woran kann das denn liegen?! ich rufe es doch richtig auf oder??
-
Du solltest dir den oben genannten Vorschlag von a.s.t_2003 mal genau aunschauen. Da gibt es nämlich einen kleinen aber wichtigen Unterschied zu deinem Code. Diese Zeile von dir ist nämlich absolut wirkungslos, da du den Return-Wert verpuffen lässt...
m_lMenu->GetSubMenu(0);Der Code von a.s.t_2003 macht etwas völlig anderes:
// Zeiger auf erstes Untermenü holen m_lMenu = m_lMenu->GetSubMenu(0);Änder deine Zeile mal so um, dann sollte das funktioniern...

-
Hallo habe auch dein Problem gahebt und konnte es auch nicht hinbekommen.
Geh mal in den Ressourcenmanager aufs menu
unter eigenschaften "view as popup"
damit hat es bei mir geklappt