CEdit - Autoscrolling in der Editbox - gestört durch UpdateData(false)
-
hallo zusammen
mein problem ist das die durch
m_cv_editA1.LineScroll(m_cv_editA2.GetLineCount(),0);gesetzte Positions im Edit field jedes mal aufgehoben wird wenn an anderer stelle
UpdateData(FALSE);aufgerufen wird
da ich dieses UpdateData(false) aber recht heufig in anderen Programmteilen benötige kann ich die ausgabe vergessen wenn das auto-scroll nicht funktioniert ...
hat mir jemand von euch nen tipp ?
das einzige was mir noch einfällt ist ein ziemlich grober work arround in dem ich den text zwischenspeichere und immer nur den sichtbaren teil ins edit reinparse -
was einerseits ein ziemlicher aufwand ist
andererseits wohl nicht sinn der sache sein ..cake
-
Du musst in jedem Fall SetWindowText auf dem Edit Control vermeiden, wenn es nicht nötig ist. Ansonsten wird die Scroll Position verändert und es flackert.
UpdateData ist für eine große Anzahl von Feldern schlecht, weil es eben immer alle Datenfelder ändert.
Du kannst versuchen mit GetSel die alte Position zu laden und mit SetSel den Cursor zurückzusetzen.
-
ok
habs geschaft meine Updates deutlich zu reduzieren
togglen tuts aber trotzdem noch ein wenig
naja
werds wohl vorerst so lassen -
-
Wenn Du nur einzelne Edit-Felder ändern willst, dann nimm statt UpdateData
CDataExchange dataFalse(this,FALSE); //statt UpdateData(FALSE) DDX_Text(&dataFalse,IDC_MEIN_EDIT,m_meineVar); CDataExchange dataTrua(this,TRUE); //statt UpdateData(TRUE) DDX_Text(&dataTrua,IDC_MEIN_EDIT,m_meineVar);