Text markieren wenn man den focus erhält
-
Hallo miteinander. Ich habe ein kleines problem:
Ich habe ein textfeld in dem ich den text markieren will wenn man mit der Maus anklickt. So wie es zb der Internet Explorer macht. DAzu habe ich folgenden Code geschrieben. Aber es tut sich leider nichts.void CDlgInput::OnSetfocusInputeng() { CEdit *ptr; ptr = (CEdit*)GetDlgItem(IDC_INPUTENG); ptr->SetSel(0,-1,FALSE); }
-
Welchen Wert hat ptr?
-
Ein zeiger auf ein Cedit objekt.
er erhält jedenfalls einen wert.
-
Hmm, dann scheint mir alles okay zu sein.
Kannst du mir mal das Projekt zukommen lassen?
@yahoo.com
-
Sorry.Nicht gern da es nicht ein open source projekt ist
-
Mausklick deselektiert ja normalerweise, und IIRC wird das nach dem SetFocus-Handler ausgeführt.
Das einfachste ist wahrscheinlich, die EM_SETSEL-message mit PostMessage zu senden:
CWnd * ptrEdit = GetDlgitem(....); _ASSERTE(ptrEdit != NULL); ptrEdit->PostMessage(EM_SETSEL, 0, -1);Bin mir nicht 100% sicher das das in allen Fällen "perfekt" funktioniert - wenn schon Tasten in the Message-Queue stehen, würden diese "verschluckt" werden.
Wenn das ein problem ist: Edit subclassen, und SetSel nach dem Basis-Handler für WM_LBUTTONDOWN aufrufen