Avoid temporary console window scroll on redraw due to writing to lower right screen cell.

This commit is contained in:
oliverschmidt 2006-08-21 22:27:10 +00:00
parent 24e17a9ed1
commit 3de5f38218

View File

@ -30,7 +30,7 @@
* *
* Author: Oliver Schmidt <ol.sc@web.de> * Author: Oliver Schmidt <ol.sc@web.de>
* *
* $Id: ctk-console.c,v 1.2 2006/08/14 23:42:33 oliverschmidt Exp $ * $Id: ctk-console.c,v 1.3 2006/08/21 22:27:10 oliverschmidt Exp $
*/ */
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
@ -48,6 +48,7 @@ static unsigned char width;
static unsigned char height; static unsigned char height;
static DWORD saved_inputmode; static DWORD saved_inputmode;
static DWORD saved_outputmode;
static unsigned char saved_color; static unsigned char saved_color;
static char saved_title[1024]; static char saved_title[1024];
static CONSOLE_CURSOR_INFO saved_cursorinfo; static CONSOLE_CURSOR_INFO saved_cursorinfo;
@ -85,6 +86,9 @@ console_init(void)
GetConsoleMode(stdinhandle, &saved_inputmode); GetConsoleMode(stdinhandle, &saved_inputmode);
SetConsoleMode(stdinhandle, ENABLE_MOUSE_INPUT | ENABLE_PROCESSED_INPUT); SetConsoleMode(stdinhandle, ENABLE_MOUSE_INPUT | ENABLE_PROCESSED_INPUT);
GetConsoleMode(stdouthandle, &saved_outputmode);
SetConsoleMode(stdouthandle, ENABLE_PROCESSED_OUTPUT);
screensize(&width, &height); screensize(&width, &height);
GetConsoleScreenBufferInfo(stdouthandle, &consoleinfo); GetConsoleScreenBufferInfo(stdouthandle, &consoleinfo);
@ -105,13 +109,13 @@ console_init(void)
void void
console_exit(void) console_exit(void)
{ {
SetConsoleMode(stdinhandle, saved_inputmode);
textcolor(saved_color); textcolor(saved_color);
revers(0); revers(0);
clrscr(); clrscr();
gotoxy(0, 0); gotoxy(0, 0);
SetConsoleMode(stdinhandle, saved_inputmode);
SetConsoleMode(stdouthandle, saved_outputmode);
SetConsoleTitle(saved_title); SetConsoleTitle(saved_title);
SetConsoleCursorInfo(stdouthandle, &saved_cursorinfo); SetConsoleCursorInfo(stdouthandle, &saved_cursorinfo);
} }