KillFocus bei einem CEdit
-
Hallo,
schreibe eine SDI-Anwendung unter VS 6.0.Erstelle einen Dialog mit diversen Steuerelementen, darunter auch CEdits.
Die Eingaben in den CEdits werden über die Message EN_KILLFOCUS auf die korrekte Eingabe überprüft.
Funktioniert auch alles soweit ganz gut.Das Problem tritt schon auf, wenn ich diesen Dialog erstelle. Irgendwie springt der Compiler dann dirkt in das ERSTE (Tabulator) CEdit und ruft dann logischerweise die EN_KILLFOCUS - Methode auf.
Zu diesem Zeitpunkt ist der Dialog ja noch nicht mal geladen, d.h. es steht noch gar kein Wert im CEdit.
Warum wird diese Fkt so früh aufgerufen?
Und vor allem NUR bei diesem EDIT....! irgendwie komisch. Liegt es daran in der Tab-Reihenfolger vorher nur Radio-Btns sind?Diese Fkt soll NUR dann aufgerufen werden, wenn ich nach einer Werteingabe das CEdit verlasse.
Vielleicht hat ja jemand eine Idee.
Danke schon mal im Voraus.
Gruss
S.
-
Also bei mir macht er das nicht. Wenn der Fokus in das erste Eingabefeld gesetzt wird, dann wird ja noch keine EN_KILLFOCUS Nachricht gesendet, sondern erst wenn ich das Feld wieder verlasse.
Kann es sein, dass der Fokus in der Anwendung per Code versetzt wird ? Z.B. durch CDialog::GotoDlgCtrl() oder SetFocus() ?
Vielleicht hilfts ja, wenn die OnInitDialog Methode FALSE zurückliefert.
Kannst Du bitte mal Teile des Dialog-Quellcodes posten ?
-
Hi,
ich setze weder einen Focus noch rufe ich irgendwelche Steuerelemente direkt auf.
Habe Deinen Vorschlag mitreturn FALSE;
in der OnInitDialog-Fkt ausprobiert und so funktionierts. Da bekommt kein Element den Fokus und das Programm läuft wie gewünscht. DANKE.
Hat das "return FALSE" noch andere Auswirkungen auf z.B. initialisierte Steuervariablen oder so?
Dann noch einmal Danke und noch nen schönen Tag.
Gruss
S.