DoubleBuffer und Retrace?
-
Hi zusammen,
ich hätte mal eine kleine Frage zur Konsole.
Wie kriege ich den Inhalt eines Array[40][80] schnell in die Konsole?
zZ. benutze ich for schleifen, dadurch ergibt sich aber das Problem
dass das letzte Zeichen einen Zeilenumbruch macht und den ganzen Inhalt
um eine Zeile nach oben schiebt. Irgendwie bräuchte ich etwas mit dem ich
meinen Array direkt in die Adresse der Konsole schieben kann...
Kann mir jemand n Tip in die Richtige richtung geben?Zur zweiten Frage. Kann man in der Konsole den Retrace abwarten? zZ. flackert
mein Lauftext ziemlich übel.Ich arbeite mit MSVC++6.
Vielen Dank!
-
Das schnellste ist, wenn Du verschiedene ScreenBuffer verwendest und diese dann einfach umschaltest:
- CreateConsoleScreenBuffer
- SetConsoleActiveScreenBufferSiehe:
Reading and Writing Blocks of Characters and Attributes
http://msdn.microsoft.com/library/en-us/dllproc/base/reading_and_writing_blocks_of_characters_and_attributes.asp
-
Jochen Kalmbach schrieb:
Das schnellste ist, wenn Du verschiedene ScreenBuffer verwendest und diese dann einfach umschaltest:
- CreateConsoleScreenBuffer
- SetConsoleActiveScreenBufferIst es inzwischen nicht schneller einen doppelt so hohen ScreenBuffer zu verwenden und diesen zu scrollen? Naja auf jeden Fall in einem Zug schreiben und auf gar keinen Fall mit cout oder Ähnlichem.
unregistered schrieb:
dadurch ergibt sich aber das Problem
dass das letzte Zeichen einen Zeilenumbruch macht und den ganzen Inhalt
um eine Zeile nach oben schiebt.Nein, das passiert auch mit allen anderen Möglichkeiten, das kannst du verhindern indem du mit SetConsoleMode() [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/setconsolemode.asp ] ENABLE_WRAP_AT_EOL_OUTPUT *ausschaltest*.
Siehe auch Implementierung der Improved Console auf http://ic.sidewindershome.net
MfG SideWinder
-
SideWinder schrieb:
Jochen Kalmbach schrieb:
Das schnellste ist, wenn Du verschiedene ScreenBuffer verwendest und diese dann einfach umschaltest:
- CreateConsoleScreenBuffer
- SetConsoleActiveScreenBufferIst es inzwischen nicht schneller einen doppelt so hohen ScreenBuffer zu verwenden und diesen zu scrollen?
Das mag zwar schneller sein, der Nachteil ist, dass der Benutzer ja selber scrollen kann... oder kann man das verhindern?
-
Stimmt natürlich auch wieder, allerdings hat der User keine Zeit zu scrollen (Umsonst muss der Programmierer sich ja keine Gedanken machen so oft neu zu zeichnen ;))
Aber okay, okay, überredet
MfG SideWinder
-
Vielen Dank!
Genau das hab ich gesucht!
Juhuu... gleich weiter machen
-
ich abs net getsetet aber müsste net
std::cout << "\b";
gehen?
das escape zeicen ist doch backspace odeR????
-
Ja, dieses Escapezeichen ist Backspace. Aber ansonsten habe ich nicht den blassesten Schimmer was du uns hier erzählen willst
MFG SideWinder