Wo/Wie bekomme ich die aktuelle ControlID die den Focus hat?
-
Wo oder bekomme ich die aktuelle ControlID die gerade den Focus hat her? Die könnte ich gut in der OnOK()-Funktion nutzen. Damit könnte ich je nach ID unterschiedliche Funktionen aufrufen.
Gruß Ronny
-
OnOK wird z.B. aufgerufen, wenn die Maus den OK-Button drückt. Damit hat der OK-Button den Fokus!
-
Ja Richtig! Aber ich meine etwas anderes:
Egal in welchen CEdit-Feld ich mich gerade befinde, kann ich mittels Enter-Taste die OnOK-Funktion aufrufen. Wie kriege ich raus, in welchem Feld bzw. ID die OnOK() aufgerufen wurde?
-
Ganz simple:
UINT id = GetDlgCtrlID( GetFocus());
-
void CBauhofStartDlg::OnOK() { UINT ctrlID = GetDlgCtrlID( GetFocus()); if(ctrlID==IDC_DATUM ) { AfxMessageBox(_T("Alles OK")); } else { CString txt; txt.Format("%d",ctrlID); AfxMessageBox(txt); } }
C:\XXXX\dat.cpp(271) : error C2660: 'GetDlgCtrlID' : function does not take 1 parameters
-
Sehen und verstehen! Guck mal in die MSDN und dann mach folgendes:
GetFocus().GetDlgCtrlID()
-
Jetzt hab ichs!
CWnd *wnd=GetFocus(); int ctrlID=wnd->GetDlgCtrlID();
-
. auf zeiger??
-
Sorry, natürlich mit -> anstatt .