Focus bei Edit-Feldern

wat

Grünschnabel
Focus bei Eingabefeldern

Ich habe in einem Dialog einige Eingabefelder und möchte eine Funktion aufrufen, wenn eines der Felder den Focus erhält.
Der Versuch mit OnSetFocus (EN_SETFOCUS - Nachricht) scheitert daran, daß diese Nachricht auch an das Eingabefeld gesendet wird, das vorher den Focus hatte, wenn der Dialog den Focus zurückbekommt.
Ich könnte mir das Feld zwar merken, habe aber dann ein Problem, wenn ich auf das gleiche Feld zurückkehren will.
Hat irgendjemand eine Idee, wie man das in den Griff bekommt?
 
Zuletzt bearbeitet:
Mir ist inzwischen folgende Lösung eingefallen:
Ich setze bei einer KillFocus-Nachricht für das Eingabefeld zunächst den Focus noch auf ein anderes, problemloses Feld.

void CDialogXXX::OnKillfocusCEdit() // nicht-modaler Dialog
{
CWnd* pNewFocus = GetFocus();
if (dynamic_cast<CEdit*>(pNewFocus) == NULL)
{ // Focus auf ein anderes Item setzen, da sonst dieses Item // zuerst nochmal den Focus erhält,
// wenn der Dialog erneut den Focus erhält
CWnd* pWnd = GetDlgItem(IDC_MASSE_ZUORDNEN);
if (pWnd) pWnd->SetFocus();
pNewFocus->SetFocus();
}
}

Ich frage mich allerdings, warum das Eingabefeld, das zuletzt den Focus hatte, diesen nocheinmal bekommt.
 
Zurück