Eventfunktionen bei dynamisch erstellten Editboxen
-
Hallo Leute,
ich habe eine Anzahl n, dynamisch(Erstellung zur Laufzeit) erstellter Editboxen. Nun benötige ich die Eventfunktion onclick() für jede erzeugte Editbox. Wie kann ich diese Funktion bereitstellen, wenn die Editboxen dynamisch erzeugt wurden?
Vielen Dank für Eure Hilfe.
Grüsse
xthing
-
Du könntest dir einen Eventhandler für den gesamten ID-Bereich anlegen und (manuell) per ON_CONTROL_RANGE() in die MessageMap eintragen - der bekommt als Parameter (afaik) die ID des aktivierten Objekts und kann danach die richtigen Aktionen auswählen.
-
xthing schrieb:
ich habe eine Anzahl n, dynamisch(Erstellung zur Laufzeit) erstellter Editboxen. Nun benötige ich die Eventfunktion onclick() für jede erzeugte Editbox. Wie kann ich diese Funktion bereitstellen, wenn die Editboxen dynamisch erzeugt wurden?
Du kannst WM_COMMAND Nachrichten zentral im Parent in der Funktion OnCommand abfangen, oder wie CStoll schreibt ON_CONTROL_RANGE oder ON_COMMAND_EX verwenden.
Allerdings gibt es keine OnClick WM_COMMAND Nachricht für ein Edit Control!
Da müsstest Du jedes Edit Control von einer eigenen Klasse ableiten und die entsprechenden WM_LBUTTONDOWN Nachricht irgendwie weiterleiten.
Was willst Du damit erreichen, dass Du mitbekomst wenn jemand in das Control klickt?
-
Martin Richter schrieb:
Allerdings gibt es keine OnClick WM_COMMAND Nachricht für ein Edit Control!
Da müsstest Du jedes Edit Control von einer eigenen Klasse ableiten und die entsprechenden WM_LBUTTONDOWN Nachricht irgendwie weiterleiten.
Ich würde es mir vermutlich einfacher machen und die EN_SETFOCUS Nachrichten abfangen. (oder WM_LBUTTONDOWN global behandeln und nachschauen, in wessen Wirkungsbereich der Mausklick gelandet ist (PtInRgn() für die GetWindowRgn() aller Edit-Felder abfragen).