www.pudn.com > MeshProcess.rar > Console.cpp


#include "stdafx.h" 
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include   
#include "Console.h" 
#include "gl/gl.h" 
#include "gl/glu.h" 
#include "gl/glut.h" 
#include "Ver3D.h" 
#include "math.h" 
#include "Ver.h" 
 
 
#ifdef PLATFORM_ENABLE_CONSOLE 
 
#define MAX_CONSOLE_LINES 1000; 
HANDLE  g_hConsoleOut; // Handle to debug console 
const double eps=1e-5; 
 
void RedirectIOToConsole(const char title[]); 
 
 
// This function dynamically creates a "Console" window and points stdout and stderr to it. 
// It also hooks stdin to the window 
// You must free it later with FreeConsole 
 
void RedirectIOToConsole(const char title[]) 
{ 
	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; 
	// How many lines do you want to have in the console buffer 
	SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize); 
	// redirect unbuffered STDOUT to the console 
	g_hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE); 
	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 ); 
	SetConsoleTitle(title); 
	// make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog point to console as well 
	// Uncomment the next line if you are using c++ cio or comment if you don't file://ios::sync_with_stdio(); 
}  
 
#endif	// PLATFORM_ENABLE_CONSOLE 
////////////////////////////////////////////////////////////////////////////  
// 
// end of console.cpp 
// 
////////////////////////////////////////////////////////////////////////////