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


  • Mod

    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);
    

Anmelden zum Antworten