Neuzeichnen von TextOut
-
Hallo Leute
Ich hab ein kleines Problem, und suche schon den ganzen Morgen nach einer Möglichkeit. Leider habe ich bis jetzt noch nichts gefunden. Ich hoffe Ihr könnt mir helfen.
Ich hab diese Funktion als Beispiel. Sie entspricht etwa genau dem was ich in meinem Programm habe. Es handelt sich um eine normale Konsolenanwendung und nicht um eine Windowsanwendung.
Danke für die Hilfe
wachs
#include "stdafx.h" #include <sstream> #include <iostream> #include <Windows.h> int _tmain(int argc, _TCHAR* argv[]){ HWND h = GetDesktopWindow(); std::string s; for(int i=0;i<5;i++){ s=""; for(int j=0;j<20;j++){ std::stringstream ss; ss<<i; s+=ss.str(); HDC hdc = GetDC(h); TextOutA(hdc,100,100,s.c_str(),s.length()); ReleaseDC(h,hdc); Sleep(500); } } return 0; }
Nun habe ich das Problem, das nicht Neugezeichnet wird. Die Ausgabe sieht also bei mir nach der ersten Runde (i=0 zu i=1) immer so aus.
00000000000000000000 10000000000000000000 11000000000000000000 11100000000000000000 etc.
Ich möchte aber, dass Neugezeichnet wird, dann würde das so aussehen.
00000000000000000000 1 11 111 etc.
-
Guck mal nach InvalidateRect.
-
Danke roflo für die Antwort
Das habe ich eben schon den ganzen morgen versucht, und will mir nicht gelingen.
Ich habe es auch schon mit DrawText versucht, aber da flakerts bei mir ungemein.wachs
-
Ich glaub mit WinGDI kriege ich das nicht in den Griff. Ich habs jetzt nochmals versucht.
Gibt es eventuell auch etwas anderes, mit dem man Text ausgeben kann? Die Anforderungen sind gering. Ich müsste die Schrift und die Schriftgrösse, sowie die Schriftfarbe anpassen können, da diese während der Laufzeit ändern können?
Danke für die Antwort.
gruss wachs
-
Du kannst So nicht auf den Desktop zeichnen. Du zwerstörst damit ja den Inhalt der anderen Fenster!
Lege ein transparentes Window darüber und zeichne darin.Was hast Du denn vor?
-
Hallo Martin Richter
Danke für die Antwort. Vorab, ich habe keine Fenster, die Erzeugt werden. Es handelt sich hier um eine altbewährte Konsolenanwendung, die nach einer Berechnung den Wert kurz auf dem Bildschirm ausgibt.
Ein MSGBox wurde extra nicht gemacht, da das Programm sofort weiter rechnen muss. Darum finde ich die Ausgabe per TextOut (ausgelagert in ein Thread) gar nicht so schlecht.
Wie meinst du das mit dem transparentem Windows? Wie erzeuge ich diese?
danke und gruss wachs
-
@wachs:
Drawing on Desktop:
http://cboard.cprogramming.com/windows-programming/51476-drawing-text-desktop.html
Transparent Window:
http://www.codeproject.com/Articles/5475/Quick-and-Dirty-Window-Transparency
-
Danke euch, bin schon dran
Gruss wachs
-
Hat bestens geklappt. Hab das Ganze jetzt umgeschrieben zu einer Windowsanwendung, und somit funktionieren jetzt auch die entsprechenden WinGDI-Funktionen.
danke nochmals
gruss wachs.