MFC中的标准输出重定向

来源:互联网 发布:servu端口设置 编辑:程序博客网 时间:2024/05/19 17:52

 

void RedirectIOToConsole()

 

{

 

int hConHandle;

 

HANDLE 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 = GetStdHandle(STD_OUTPUT_HANDLE);

 

hConHandle = _open_osfhandle((INT_PTR)lStdHandle, _O_TEXT);

 

fp = _fdopen( hConHandle, "w" );

 

*stdout = *fp;

 

setvbuf( stdout, NULL, _IONBF, 0 );

 

// redirect unbuffered STDIN to the console

 

lStdHandle = GetStdHandle(STD_INPUT_HANDLE);

 

hConHandle = _open_osfhandle((INT_PTR)lStdHandle, _O_TEXT);

 

fp = _fdopen( hConHandle, "r" );

 

*stdin = *fp;

 

setvbuf( stdin, NULL, _IONBF, 0 );

 

 

// redirect unbuffered STDERR to the console

 

lStdHandle = GetStdHandle(STD_ERROR_HANDLE);

 

hConHandle = _open_osfhandle((INT_PTR)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();

 

}