ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
1402
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Crash Kid ist offline 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üße
     
    Wenn 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.

  2. #2
    MCoder ist gerade online Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.563
    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

  3. #3
    Crash Kid ist offline 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üße
     
    Wenn 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.

  4. #4
    deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.731
    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.

  5. #5
    Crash Kid ist offline 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üße
     
    Wenn 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

  1. Winapi: TextOut Problem
    Von cwriter im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 01.05.10, 22:54
  2. TextOut() Dimension
    Von Thomasio im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 11.06.08, 18:19
  3. TextOut() durchsichtig
    Von dark80 im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 03.08.06, 08:41
  4. TextOut ClientDC
    Von bukem im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 17.06.05, 16:10
  5. TextOut() Koordinatensystem
    Von Ehssan im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 10.05.05, 13:03