Message abfangen bzw. entfernen
-
Ich habe von der CListCtrl eine Ableitung. Diese reagiert auf einen Rechtsklick.(Öffnet dann im ClistCtrl ein Kontextmenü.(reagiert auf RButtonDown))
In einer anderen Klasse des Programms, in welcher diese Ableitung nochmals abgeleitet wird, wird mittels OnContextMenu ebenfalls ein Kontextmenü im ClistCtrl erzeugt.
das Programm versucht nun mehrere Kontextmenüs zu erstellen, welche sich dann übereinanderlegen und man nicht mehr weiterkommt.
Wäre es eine Lösung wenn ich die RButtonDown Message in der Ableitung der Ableitung einfach abfange/entferne ? Wie mache ich das ?
Es soll dann nur noch das Kontextmenü von OncontextMenu angezeigt werden(von der 2. Ableitung).
-
Warum nimmst du nicht in beiden Klassen OnContextMenu?
Dann gibt es automatisch nur eines.
-
Man sollte sowieso nur OnContextMenu verwenden! Viele Programmmierer vergessen, dass es die Contextmenu-Taste auf den Keyboards gibt und die löst eben keinen RKlick aus!
Tastaturfans (wie ich z.B.) werden dann immer wieder enttäuscht, dass der Programmierer nur explizit RKlicks für Kontextmenüs kennt.
-
Martin Richter schrieb:
Man sollte sowieso nur OnContextMenu verwenden! Viele Programmmierer vergessen, dass es die Contextmenu-Taste auf den Keyboards gibt und die löst eben keinen RKlick aus!
Tastaturfans (wie ich z.B.) werden dann immer wieder enttäuscht, dass der Programmierer nur explizit RKlicks für Kontextmenüs kennt.
Ah, jetzt weiß ich, wieso es da zweierlei gibt.

-
Super Idee statt RbuttonDown ebenfalls OnContextMenu zu verwenden

Jetzt wird mir nur noch ein Kontextmenü angezeigt. (Von der 1. Ableitung).

Gibts da vielleicht noch eine Möglichkeit das ich einen weiteren Menüpunkt in das Menü von der 1. Ableitung einfüge, so dass die Message dann an die 2. Ableitung weitergereicht wird, und mir so dann das Kontextmenü von der 2. Ableitung angezeigt wird ?
Aber wie könnte ich die Message dann noch zur 2. Ableitung weiterreichen ?
-
oder gibts evtl. eine Möglichkeit beide Kontextmenüs gleichzeitig anzuzeigen ?
Also in der 1. Ableitung beim Öffnen des Kontextmenüs kontrollieren ob es noch ein zweites in der 2. Ableitun gibt, und falls ja dieses anzeigen, so das man auch aus beiden Menüs Punkte auswählen kann !?weil so wie es im Moment aussieht könnte das Contextmenü von der 2. Ableitung auch ganz aus dem code löschen, da es ja immo gar keine Möglihckeit gibt, dieses anzuzeigen
-
Du könntest die Mauskoordinaten verändern bevor du die Basisklasse aufrufst, dann wird das zweite Menü woanders angezeigt.
Oder du lädst das Menü dynamisch an das andere dran - aber frag mich jetzt blos nicht nach Code, ist nur so eine vage Idee.
-
estartu schrieb:
Du könntest die Mauskoordinaten verändern bevor du die Basisklasse aufrufst, dann wird das zweite Menü woanders angezeigt.
Oder du lädst das Menü dynamisch an das andere dran - aber frag mich jetzt blos nicht nach Code, ist nur so eine vage Idee.
es kann bei mir immer nur ein Menü gleichzeitig angezeigt werden. Das 2. kann erst dann eingeblendet werden wenn aus dem 1. menü eine Option ausgewählt wurde. Wie kann ich es realiseren, das mir 2 Menüs gleichzeitig angezeigt werden ?
-
Ist das zweite ein Untermenü des ersten?

Also sowas:
bla bla option> bla bla bla bla
-
Es ist insgesamt ein etwas größeres Projekt.
In der Ableitung des CListCtrls, wird die Möglichkeit gegeben, mit einem Rechtsklick ein Kontextmenü im ClistCtrl zu öffnen.
Funktioniert prima an allen Stellen im Programm.
Dann gibts aber noch eine Ableitung der Ableitung des CListCtrls. (Also sozusagen eine Ableitung zweiten Grades)
Diese Ableitung der Ableitung wird in einem bestimmten Dialog verwendet, welcher auf OnContextMenu reagiert, und es so erlaubt die Einträge des Menüs zu bearbeiten.
Hoffe das ist jetzt was verständlicher

Die optimale Lösung wäre natürlich beide Menüs auszugeben. Wenn man dann einen Menüpunkt auswählt, sollen auch beide Menüs verschwinden.
Sind also beides zwei verschiedene Kontextmenüs