2009-05-19 16 views
4

Gibt es eine einfache Möglichkeit, wenn ein Benutzer auf eine wxTextCtrl klickt? Nach dem Lesen der Dokumente wxTextCtrl sehe ich, dass es kein Klick- oder Doppelklick-Ereignis gibt. Ich verstehe, dass es keine "click" -Ereignisse in wxWidgets von der Frage wxWidgets: Detecting click event on custom controls gibt, so dass ein einfaches Mouse-Down-Ereignis genügt.Einfacher Weg, um ein wxTextCtrl Click Event zu bekommen?

Beispiel Antwort:

Von: wx wiki

textCtrl->Connect(wxEVT_LEFT_DOWN, 
       wxMouseEventHandler(MyClass::OnClick), NULL, this); 

Antwort

3

Haben Sie versucht, die wxEVT _ LINKS _ AB und wxEVT _ LINKS _ UP Ereignisse für Ihren Text Kontrolle zu behandeln? Entweder indem Sie sie zur statischen Nachrichtenzuordnung hinzufügen oder indem Sie Connect() für die Handlermethoden aufrufen.

Edit:

Nicht alle Ereignisse in der Dokumentation einer Klasse aufgeführt sind. Sie müssen auch in der Hierarchie nach oben gehen, und zwar von wxTextCtrl bis wxControl bis wxWindow. Leider kann ich die Dokumentation für die Mausereignisse in keiner der beiden Klassen finden. Es sollte dennoch möglich sein, mit ihnen umzugehen, auch wenn dies nicht eindeutig dokumentiert ist.

+0

Nein, ich sehe das Ereignis nicht unter http://docs.wxwidgets.org/2.8.4/wx_wxtextctrl.html. Sind diese Ereignisse zum Einhaken von Mausereignissen im Allgemeinen über die wxMouseEvent-Klasse oder gibt es ein Ereignis dort, aber nur versteckt? Ich verwende Code :: Blocks für den GUI-Designer und es zeigt keine Ereignisse für die Maus, d. H. "Ausgewählt" oder "aktiviert". Wohin soll ich von dort gehen? Ich habe kein Problem den Code ohne den Designer zu schreiben. Vielen Dank. –

+0

Können Sie mir ein Beispiel für einen Connect() - Anruf zeigen? Meine Verbindungslinie sieht folgendermaßen aus: Verbinden (IS_TEXTCTRL1, wxEVT_LEFT_DOWN, (wxObjectEventFunction) & MyClass :: OnTextMouseDown); Alles kompiliert gut, aber MyClass :: OnTextMouseDown wird nie aufgerufen. Danke für die Hilfe. –

+0

IS_TEXTCTRL1 sollte ID_TEXTCTRL1 sein –