CDC Problem
-
hallo zusammen,
habe hier die Member - Funktion Ausgabe()
void CLiveDlg::Ausgabe()
{
CClientDC windowDC(this);
CDC speicherDC;
.....
.....
speicherDC.TextOut(285,39,s_pos1); // s_pos1 vom Typ CString
.....
.....
windowDC.StretchBlt(0,0,rect.Width(),rect.Height(),
&speicherDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
}Also im Grunde den CDC speicherDC der erstellt wird und an einer gewissen
Position einfach einen Text bekommt und dann an das Dialog ausgibt.nun ist mein Problem das , wenn ich s_pos1 ändere und die Funktion
Ausgabe() nochmals ausführe der vorherige Text noch zu sehen ist
und der neue Text einfach darüber geschrieben wird.
Also irgendwie bleibt der " alte " CDC erhalten . Hab es mit speicherDC.DeleteDC() versucht und trotzdem wird der Text überschrieben.Wo liegt das Problem ?
Hat jemand eine Idee ?Danke schön
-
Ich hab ne Idee und weiss auch genau wo dein Problem liegt, mich wundert das das dir noch keine Seitenefekte aufgefallen sind, oder rufst du ausgabe in der OnPaint() deines Dialoges auf? Denn das is die einzige stelle wo gezeichnet wird, wenn du das selbst auf einene Faust machst, kommen ganz sonderbare Effekte zu Tage oder hast du schon mal deinen Dialog außerhalb des sichtbaren bereiches und wieder zurück verschoben?. Also verschieb den Aufruf von Ausgabe() in die OnPaint() und erzwinge das neuzeichnen mit invalidate().
So sollte erstmal weiter helfen
-
Ich habe das Problem gelöst .
Nun hatte ich wie du gesagt hast die Ausgabe in der OnPaint().Das Problem war aber , das ich vor dem " speicherDC.TextOut(285,39,s_pos1) "
ersteinmal ein Hintergrundbild reingeladen habe, mitspeicherDC.SelectObject(&cb_hintergrund); // cb_hintergrund vom Typ CBitmap
und im Oninit mit einer
Hintergrund Ressource
mit LoadBitmap eingeladen.
So nun kam das "speicherDC.TextOut(285,39,s_pos1)" und jetzt
wurde nicht nur der speicherDC geändert sondern auch das cb_hintergrundalso wurde das so gennante Hintergrund Bild immer überschrieben !
habe ich einfach gelöst indem ich am Anfang der Ausgabe Funktion einfach immer wieder das alte Hintergrundbild mit LoadBitmap einfüge..Danke schön
-
na gut die Problematik konnte ich so net sehen, da waren die infos zu wenig, aber mal noch ne anmerkung, warum erstellst du keinen CDC für dein Hintergrundbild und blittest in deinen SpeicherDC alles zusammen und zum schluß alles aus den SpeicherDC in deinen DialogDC kannste dir das ständige nachlagen erspaaren, nur mal so als Idee.