Blame view

rtsGUIConsole.cpp 1.79 KB
0c9bf8ae   dmayerich   Case-sensitive er...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
  #ifdef WIN32

  #include <windows.h>

  #include <stdio.h>

  #include <fcntl.h>

  #include <io.h>

  #include <iostream>

  #include <fstream>

  

  #ifndef _USE_OLD_IOSTREAMS

  

  using namespace std;

  #endif

  

  // maximum mumber of lines the output console should have

  

  static const WORD MAX_CONSOLE_LINES = 500;

  //#ifdef _DEBUG

  

  void RedirectIOToConsole(int Xpos, int Ypos, int Width, int Height)

  {

  	int hConHandle;

  	long lStdHandle;

  	CONSOLE_SCREEN_BUFFER_INFO coninfo;

  	FILE *fp;

  	// allocate a console for this app

  	AllocConsole();

  	// set the screen buffer to be big enough to let us scroll text

  	GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);

  	coninfo.dwSize.Y = MAX_CONSOLE_LINES;

  	SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE),

  	coninfo.dwSize);

  	// redirect unbuffered STDOUT to the console

  	lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);

  	hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);

  	fp = _fdopen( hConHandle, "w" );

  	*stdout = *fp;

  	setvbuf( stdout, NULL, _IONBF, 0 );

  	// redirect unbuffered STDIN to the console

  	lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE);

  	hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);

  	fp = _fdopen( hConHandle, "r" );

  	*stdin = *fp;

  	setvbuf( stdin, NULL, _IONBF, 0 );

  

  	// redirect unbuffered STDERR to the console

  	lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);

  	hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);

  	fp = _fdopen( hConHandle, "w" );

  	*stderr = *fp;

  	setvbuf( stderr, NULL, _IONBF, 0 );

  

  	// make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog

  	// point to console as well

  	ios::sync_with_stdio();

  	//position

  	MoveWindow(GetConsoleWindow(), Xpos, Ypos, Width, Height, true);

  }

  

  #else

  void RedirectIOToConsole(int Xpos, int Ypos, int Width, int Height)

  {

  }

  #endif

  

da3d4e0e   dmayerich   Initial commit.
65
  //End of File