CEdit mit enter übernehmen
-
hallo leute,
ich habe folgendes Problem:
im Property gibt es 4 Editboxen,
jenachdem in welchem von diesen Editoxen der Benutzer was ändert und mit "Enter" bestätigt, will ich bestimmte Aktion ausführen.Bis jetzt habe ich diese Methode abgeleitet, wo ich den "Enter" schon mal im gesammter Property abfangen kann, wie kann ich jetzt den Prüfen, in welcher von diesen CEditboxen der "Enter" gedruckt worden ist ?
BOOL CPropChannels::PreTranslateMessage(MSG* pMsg) { if ( pMsg->message == WM_KEYDOWN ) { if ( pMsg->wParam == VK_RETURN ) { // hier irgendwie focus abfragen... return TRUE; } } return CPropertyPage::PreTranslateMessage(pMsg); }mit freundlichen Grüßen,
Sergius
-
Villeicht sowas in der Art:
CWnd * wnd = this->GetFocus(); if (wnd) { int id = wnd->GetDlgCtrlID(); switch (id) { case IDC_TEXT1: .... } }
-
klappt leider nicht...
die ID's die mit
int id = wnd->GetDlgCtrlID();rauskommen, stimmen mit den ControlID's nicht überein
mit freundlichen Grüßen,
Sergius
-
Nicht ausprobiert:
if(GetDlgItem(IDC_EDIT1)->GetFocus() == GetDlgItem(IDC_EDIT1))
-
danke, es hat funktioniert

mfg
Sergius
-
Ich hätte dazu mal eine weitergehende Frage.
Ich will auch in CEdit-Felden mit der Enter-Taste immer ein Feld weiterspringen. Das funktioniert ja auch mit der o.g. Erklärung.
Ich würde jetzt aber gerne wieder mit der "Minuszeichen"-Taste ein Feld zurückspringen können. (Also im Prinzip die Tab-Funktion auf die Tasten - und Enter verlagern!)
Jetzt habe ich aber das Problem, dass ich zwar mit der "Minuszeichen"-Taste zurück springen kann, aber gleichzeitig auch das Minuszeichen dann im Feld steht. Das will ich aber nicht.Wie kann ich das machen das da kein Minuszeichen im Feld steht?
-
isabeau schrieb:
Nicht ausprobiert:
if(GetDlgItem(IDC_EDIT1)->GetFocus() == GetDlgItem(IDC_EDIT1))Das ist sehr irreführen!
GetFocus ist statisch!if(CWnd::GetFocus() == GetDlgItem(IDC_EDIT1))Dito müsste langen:
if(GetFocus() == GetDlgItem(IDC_EDIT1))Oder wenn Du Controls definiert hast:
if(GetFocus() == &m_edMyEdit1)
-
Ja, okay. Das sehe ich ein das der Code so modifiziert besser ist.
Aber trotzdem nochmal meine Frage. Wie kann ich wenn der Cursor in einem CEdit-Feld steht und ich z.B. auf die Minus-Taste drücke, diesen Tastendruck so abfangen und eine Aktion ausführen, ohne das das Minus-Zeichen in das CEdit-Feld geschrieben wird? Die Aktion des Tastendrucks kann ich in PreTranslateMessage abfangen. Das klappt auch alles soweit. Aber..
Mir geht es darum, das Schreiben/Anzeigen des Minus-Zeichen-Symbols zu verhinden?!?
-
Du solltest dem System eventuell mitteilen, daß du die Nachricht verarbeitet hast, dann wird sie nicht mehr weitergeleitet (
return TRUE;in der PreTranslateMessage). Wenn das nichts hilft, könntest du das Minus auch wieder aus der Edit-Box rauslöschen.
-
Vielen, vielen Dank.
return true; klappt.