Adding a Console to an openGL GUI

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
  }

hey i actually got it to work… if anyone would like to know how to create a console in a win32 app then you can respond. no one responded to this thread so i am assuming many dont care cos they dont need something like this. to me, it seems this can be very useful.

Hello:

Your adding a Console window to an OpenGL app
is exactly what I came here looking for.

I have an app that was originally written to work on an SGI prior to OpenGL, It uses immediate mode SGI GL commands. The user communicates with the program through the console window that was available with the
original SGI GL language. OpenGL does not provide the console I/O for some reason.

I am very interested in seeing how you got it to work so that I can resurect my programs under OpenGL.

Graphyx . . .

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.