i am looking to add a console with my openGL app. this is the code i am using so you can follow what i am doing. the RedirectIOToConsole function can be found here: http://dslweb.nwnexus.com/~ast/dload/guicon.htm
Everything works great, the window open and cin and cout work good but i am unable to interact with openGL app and have to close everything and then restart. can anyone help me? thanks in advance!
Here is some code to let you see what I am doing:
void RedirectIOToConsole()
{
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();
}
void keyBoardStuff()
{
if (keys[VK_INSERT]) //going to add a console handle for user input
{
RedirectIOToConsole(); //goes to Code…does AllocConsole() etc etc.
cout << "Enter #: ";
cin >> number;
cout << endl << "You entered the number " << number << endl << endl;
//FreeConsole(); //tried to Free Console but would just re-initialize //the window
}
}
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine, // Command Line Parameters
int nCmdShow) // Window Show State
…
if (active) // Program Active?
{
if (keys[VK_ESCAPE]) // Was ESC Pressed?
done=TRUE; // ESC Signalled A Quit, Quit OpenGL App
else // Not Time To Quit, Update Screen
{
DrawGLScene(); // Draw The OpenGL Scene
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
keyBoardStuff(); // calls all keyboard interaction commands
}