CEdit mit mehr als 255 Zeichen - Cursor springt auf Position 0
-
Hallo zusammen,
wenn der String beim CEdit-Steuerelement länger als 255 ist, springt der Cursor bei mir nach jeder Zeicheneingabe auf Position 0.
Außerdem funktioniert das Markieren mit SetSel() dann auch nicht mehr.OnEditFkt() { UpdateData(true); m_edit_description_str.Replace("\r\n", "\\n"); // String manipulieren m_edit_description.SetSel(0,-1); //nur zum Test - funktioniert nur bis 255 Zeichen UpdateData(false); }Ich habe hier im Forum irgendwo gelesen, das die Variante mit 2x UpdateData() nicht sehr elegant ist, da alle Steuerelemente aktualisiert werden und es auch zu unschönen Nebeneffekten kommen kann. Allerdings haben die dort angebotenen Alternativen (SetDlgItemText() etc.) bei mir nicht funktioniert.
Könnte jemand vielleicht ein paar sachdienliche Tips zu der Problematik geben, oder vielleicht sogar ein paar Zeilen Code, die definitiv funktionieren?

Danke im Voraus!
Andy
-
Ja! UpdateData ist unellegant, weil es noch mehr COntrols updaten würde (alle)!
Wieso geht SetDlgItemText nicht?
Dein gesamter Text wird doch selektiert, oder nicht? Was ist Dein Problem?
Was ist, wenn Du bei SetSel exakt die Länge angibst?
-
Hallo Martin,
Problem ist gelöst: Wenn SetSel NACH UpdateData(false) / SetDlgItemText(...) steht, funktioniert es!
Ohne SetSel würde der Cursor ab 256 Zeichen trotzdem auf Position 0 springen.
Schade das keiner diesen Effekt zu kennen scheint...//FUNKTIONIERT int i, j; m_edit_description.GetSel(i,j); //get (save) cursor position SetDlgItemText(IDC_EDIT_DESCRIPTION,m_edit_description_str); m_edit_description.SetSel(i,j);//set cursor to current position //CURSOR SPRINGT NACH JEDER EINGABE AUF POSITION 0 int i, j; m_edit_description.GetSel(i,j); //get (save) cursor position m_edit_description.SetSel(i,j);//set cursor to current position SetDlgItemText(IDC_EDIT_DESCRIPTION,m_edit_description_str);MFG
Andy