ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
840
840
EMPFEHLEN
-
01.05.12 23:23 #1
Mitglied Gold
- Registriert seit
- Jan 2009
- Beiträge
- 147
Hallo an alle,
vermutlich wurde schon mal ein Thread dieser Art erstellt, aber ich konnte ihn leider nicht finden. Google bietet mir auch nicht die richtigen Ergebnisse, darum stelle ich diese Frage jetzt doch hier.
Ich habe ein Programm geschrieben, welches ein Child-Fenstererstellt. In diesem Child-Fenstergebe ich eine Varriable (char cTest[100]) mit Hilfe von TextOut() aus. Wenn ich nun den Inhalt diser Varriable änder, und das Child-Fenster aktuallisiere, bleibten die letzten Zeichen des vorherigen Inhalts stehen. Passiert nur, wenn der neue Inhalt weniger Zeichen hat, wie der alte (ist ja logisch
).
Nun meine Frage, was muss ich machen, damit alle "alten" Zeichen aus dem Zeichenbereich verschwinden?
Es liegt nicht am Inhalt der Varriable, weil der wirklich nur die "neuen" Zeichen beinhaltet. Folglich bringt ein "\0" am Ende auch nichts.
Das einzige was hilft ist, alle Zeichen mit LEERZEICHEN zu überschreiben, aber das kann ja kaum die Lösung sein.
Vielen Dank für alle Antworten
grüßeWenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.
Danke euch
Programmiere in C, C++ auf Windows XP, Vista und Windows 7
Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.
-
02.05.12 08:17 #2
Mitglied Diamant
- Registriert seit
- Jul 2005
- Ort
- München
- Beiträge
- 2.494
Hallo,
zuerst mal die Frage, an welcher Stelle zeichnest du denn den Text? Doch hoffentlich im Paint-Event des Child-Windows.
Wenn sich der Fensterinhalt ändert und daher das Fenster neu gezeichnet werden muss, wird der bisherige Inhalt mit der Funktion Invalidate() oder InvalidateRect() als ungültig gekennzeichnet und das Paint-Event ausgelöst. Standardmäßig wird dabei der Fensterinhalt gelöscht, d.h. mit der Hintergrundfarbe überschrieben.
Gruß
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
02.05.12 14:42 #3
Mitglied Gold
- Registriert seit
- Jan 2009
- Beiträge
- 147
Hallo,
ja ich zeichne den Text in der WM_PAINT mithilfe von BeginPaint() und EndPaint(). Ich zeichne dann auch das Child-Fenster mit InvalidateRect(hChildWnd, NULL, TRUE) neu. Der Befehl kommt aus einem Thread heraus, genauso wie die Änderung der Char-Varriable.
Was ich jetzt auch rausgefunden habe ist, dass es doch nicht an dem neuZeichnen liegt sondern daran, dass wenn ich einen neuen 0-terminierten-String einlese, die Funktion TextOut() den kompletten String schreibt. Also auch was nach dem "\0" steht, was z.B. MessageBox() nicht macht. Gibt es dann auch andere Funktionen wie TextOut(), die nur die Zeichen bis "\0" zeichnen?
grüßeWenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.
Danke euch
Programmiere in C, C++ auf Windows XP, Vista und Windows 7
Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.
-
02.05.12 15:59 #4
Mitglied Diamant
- Registriert seit
- Jun 2005
- Beiträge
- 8.540
Hi.
Du mußt lediglich bei TextOut die Länge der Zeichenkette als letzten Parameter angeben.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
02.05.12 16:55 #5
Mitglied Gold
- Registriert seit
- Jan 2009
- Beiträge
- 147
Hi,
danke, hab ich auch grad rausgefunden. Ich habe immer TextOut(..., cVarriable, sizeof(cVarriable)); geschrieben. Wenn ich TextOut(..., cVarriable, strlen(cVarriable)); mache, dann passt alles.
Danke
grüßeWenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.
Danke euch
Programmiere in C, C++ auf Windows XP, Vista und Windows 7
Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.
Ähnliche Themen
-
Winapi: TextOut Problem
Von cwriter im Forum C/C++Antworten: 3Letzter Beitrag: 01.05.10, 22:54 -
TextOut() Dimension
Von Thomasio im Forum C/C++Antworten: 3Letzter Beitrag: 11.06.08, 18:19 -
TextOut() durchsichtig
Von dark80 im Forum C/C++Antworten: 1Letzter Beitrag: 03.08.06, 08:41 -
TextOut ClientDC
Von bukem im Forum VisualStudio & MFCAntworten: 3Letzter Beitrag: 17.06.05, 16:10 -
TextOut() Koordinatensystem
Von Ehssan im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 10.05.05, 13:03




Zitieren
Login
