DoubleBuffering funktioniert nicht.
-
Ich versuche gerade meine Ausgabe das Flackern abzugewöhnen. Dazu unten stehender Code, der in View::OnDraw() ausgeführt wird. Leider wird nichts angezeigt, ein Fehler kommt im Debugger aber nicht. Was läuft hier falsch?
CVersimToolDoc* pDoc = GetDocument(); CDC* AusgabeDC = (CDC*) GetDC(); BOOL fail; CRect rClient; GetClientRect(rClient); // Zwischenspeicher zur Vermeidung des Flackern CDC* pDC = new CDC; fail = pDC->CreateCompatibleDC(AusgabeDC); ASSERT(fail); pDC->SetBkMode(TRANSPARENT); pDC->SelectObject(Font_Info); Frontend(); // Ausgabe Anfang pDC->DrawText("Test",GetRect(0,3,0,1),DT_WORDBREAK); // hier stehen noch einige DrawText Befehle // AusgabeDC->BitBlt(0,0,rClient.right,rClient.bottom,pDC,0,0,SRCCOPY); ReleaseDC(pDC); ReleaseDC(AusgabeDC);
-
1. Warum verwendest Du keinen fertigen Code von
http://www.codeproject.com/gdi/flickerfree.asp?2. Warum verwendest Du nicht den DC der durch OnDraw übergeben wird.
3. Kosmetisch CreateCompatibeDC liefert TRUE wenn es Erfolg hatte. Der Name BOOL succeeded; würde das Ergebnis besser wiedergeben.
Begründung: fail, hätte bei Dir den Wert !=0 (TRUE), wenn alles erfolgreich war.