Ereigniss bei Fokusierung eines Buttons, bräuchte bitte Hilfe
-
Hallo C++ Experten,
ich hätte eine Frage an Euch: normalerweise ist es ja nur möglich im Klassenassistenten bei einem Button als Objekt, die Nachrichten "BN_CLICKED" und "BN_DBLCLICKED" auszuwählen.
Ist es auch möglich und wenn ja wie, schon bei der Fokusierung eines Buttons mit der Tabulatortaste (oder Pfeiltaste) eine Funktion hervorzurufen (z.B. ein neues Dialogfenster öffnen etc.)?
Ich hoffe Ihr könnt mir bei diesem Problem weiterhelfen. Danke.
-
WM_SETFOCUS
-
Danke estartu_de!
Aber wie verwende ich das? Wenn ich in den Klassenassistenten gehe, kann ich, wenn ich den Button als Objekt-ID auswähle, nur die Nachrichten "BN_CLICKED" und "BN_DOUBLECLICKED" sehen. Da kann ich kein WM_SETFOCUS auswählen.
-
ON_WM_SETFOCUS()
muss in die MessageMap vom Dialog.
Und die Funktion sieht so aus:void OnSetFocus(CWnd* pOldWnd);
Wenn du das von Hand einbaust, sollte es gehen, sonst weiß ich auch nichts.
-
Danke.
aha...aber wie verbinde ich das mit der ID meines Buttons?
Wie teile ich dem Programm mit, die Funktion auszuführen, wenn ich den einen Button fokusiere?
-
Ich dachte eigentlich, man könne da was von anderen Controls übertragen, aber das klappt nicht.
Wenn du nicht noch ne eigene Button-Klasse machen möchtest, habe ich keine Idee mehr.
-
puh, das wäre geschafft! Jetzt habe ich die Klasse CButton erstellt.
wie kann ich jetzt dieser Klasse die gewünschten Buttons zuweisen?
-
Nenne deine Klasse bitte NICHT CButton.
So heißt die MFC Klasse schon.
Nenne sie CMyButton oder CFocusButton oder so.Leg einfach mit dem Assistenten eine Membervariable (Control) für den Button an. Typ CButton.
Dann gehst du dahin, wo der deklariert wurde und änderst den Typ von Hand in deinen. (Vergiss das #include nicht.)
-
keine Sorge, darauf hat mich das Programm schon hingewiesen...
Hat geklappt.
Danke für Deine Hilfe!
-
Na, dann ist ja gut.