Textfeld flackert ( CEdit )
-
Hallo,
das Problem müssten ja eigentlich viele von euch schon gehabt haben aber eine Lösung finde ich trotzdem nicht im Netz.Mein Programm schreibt in kurzen Abständen Daten in ein CEdit-Textfeld und flackert dabei etwas. Dieses flackern würde ich gerne wegbekommen, wie?
Ich habe gehört, dass es gehen soll, indem man eine eigene Klasse von CEdit ableitet und dann OnPaint und OnEraseBkgnd überschreibt aber genau da hapert es.
Vielen Dank für eure Hilfe!
Michael
-
Verwendet nicht SetWindowText, sondern SetSel/ReplaceSel!
-
Das hat leider nicht funktioniert.
Das CEdit ist mehrzeilig und der Text ist ca. 400Zeilen lang.Ich denke nicht, dass ich um eine abgeleitete Klasse herum komme. Ich weiß nur nicht, wie das geht.
Ich dachte an eine Lösung wie in dem Artikel:
http://msdn2.microsoft.com/en-us/library/ms969905.aspxIch kriege den Ansatz nur nicht umgesetzt.
Es scheitert schon hier
LRESULT CALLBACK NoFlickerWndProc(HWND hWnd, UINT msg,
WPARAM wParam, LPARAM lParam)
wie kriege ich diesen Callback in meine abgeleitete Klasse?
-
Was spielt das für eine Rolle wie lang der Text ist. Das Problem wirst Du so nicht in den Griff bekommen.
Das Edit Control hat seine eigene Paint struct und seine eingeenen Paint Handler, der ziemlich eingenwillig ist.
Mit diesem Ansatz kommst Du nur weiter, wenn Du eine Paint Routine optimieren willst.Ich wiederhole: Verwende ReplaceSel und füge nur die Daten an, die sich verändern!