Bilder in der Konsole



  • Hab ein interessanten Code gefunden, mit dem man Bitmaps in der Konsole darstellen kann:
    http://www.cppforum.de/forum/topic,54,-grafik-%5Bvollstaendige-codes%5D.html
    Das Problem ist, wenn man nach unten scrollt und wieder hoch dann ist das Bild nicht mehr da warum?



  • Das hat mit dem internen Aufbau von Windows-Applikationen zu tun (die Konsole ist ja auch nur ein Windows-Programm).

    Beim Scrollen wird eine WM_PAINT-Nachricht an das Fenster geschickt welches daraufhin den Fensterinhalt neu zeichnet - der Inhalt hat sich ja verändert. Ein "normales" Programm würde dabei auch das Bild neu zeichnen - dass du mit deinem Programm ein Bild in die Konsole gezeichnet hast weiß die Nachrichtenprozedur der Konsole aber nicht (Nachrichtenprozedur = Funktion die Nachrcihten abarbeitet).

    Deswegen verschwindet das Bild. Da man auf die Nachrcihtenprozedur der Konsole absolut keinen Einfluss hat kann man da nichts machen -> Wer Pixelgrafik will muss ein eigenes "echtes" Windows-Fenster erzeugen.

    MfG SideWinder



  • Hat man erstmal das Fensterhandle, kann man ueber SetClassLongPtr() z.B. die Fensterprozedur subclassen. Das geht mit der Konsole genauso wie mit jedem anderen Programm (falls es bei XP noch geht wg. Sicherheitsbechraenkungen). D.h. man schreibt eine eigene Fensterprozedur und behandelt z.B. die WM_PAINT-Message zuerst selber, bevor man den Code der Konsole aufruft (oder umgekehrt). Naeheres zum Subclassen findet sich z.B. in der Windows Platform SDK Dokumentation ( http://msdn.microsoft.com/library/ ).


Anmelden zum Antworten