TextOut ClientDC

bukem

Mitglied
Hi,

ich gebe mit ClientDC in einer schleife verschiedene lange texte aus.
nun ist der effekt das wenn ein langertext gefolgt von einen kurzen der rest von dem langen text noch zu sehen ist.

wie kann ich nach der ausgabe ein refresh bzw den vorhandenen text von dem dialog wieder löschen?. damit nur der aktuelle text sichtbar ist ?

code:
int x = 0;
while (x == 100)
{
CClientDC MyDC(this);
CRect MyRect;
GetClientRect(MyRect);

MyDC.TextOut(20,MyRect.bottom - 30,"Aktuelle Datei");
MyDC.TextOut(200,MyRect.bottom - 30, _T(finder.GetFileName()));

x++
}


tnx

bukem
 
Also grunsätzlich sollten dinge die in einen DC (Device Context) gezeichnet werden (Text, Grafik) immer dann gemacht werden, wenn dein Fenster die Nachricht WM_PAINT erhält.
Da du da MFC machst füge deiner Dialog-/Fensterklasse die Methode OnPaint() hinzu, das kann man auch über den Klassenasistenen machen.

Gruß Daniel
 
danke für deine antwort.

das mit onpaint ist klar.

nur suche ich eine möglichkeit aus eine funktion einen text auszugeben und an der gleichen stelle den vorherigen text wieder zu löschen.

im bild kannst du es sehen das die datei wissen.exe gerade gefunden wurde, nur vorher war einen datei mit andereen zeichen am ende dran.
es sieht halt blöd aus.

darum will ich den text ausgeben, dann bevor der neuen text ausgegeben wird alles wieder löschen das nur der aktuelle text sichtbar ist.

ist nur als hinweis für den benutzer das noich dateien gefunden werden, lauft so schnell das man nicht lesen kann was da steht. nur die überlappung der verschiedenen texte stört.


tnx


bukem
 

Anhänge

  • cdDB.jpg
    cdDB.jpg
    19,2 KB · Aufrufe: 32
Du kannst vor dem TextOut mit FillSolidRect einfach eine Box drübermalen.

Aber wie schon gesagt, das löst du wirklich besser über OnPaint bzw. noch besser über ein Static, dessen Text du einfach setzt. Die sind selbstlöschend.
 

Neue Beiträge

Zurück