  | 
   Dynamic Win32 Console Allocation 
   Submitted by  |   
  
  
Recently I wanted to use a console window to display some debug output for a
Win32 program I was making with Visual Studio.  Many sites on the internet
recommend either creating a new project as a Win32 Console Application, or
adding the _CONSOLE definition to your project and changing the
/subsystem:console link setting to /subsystem:windows.
  
This might be fine for temporary debuging sessions or making a permenant
console mode app, but I wasn't satisfied with this approach. I wanted the
ability to create the console when I needed it, and to make the console go
away when it was done.  After a quick search on MSDN I found a set of
functions that hasn't gotten much press but was exactly what I was looking
for, so I thought I would share it you.  Here is a small selection of the
functions to get you started:
 
 
AllocConsole - Creates a new console for the calling process
FreeConsole - Detatches the calling process from its console
GetStdHandle - Retrieves handles that are equivelent to STDOUT, STDIN, STDERR
ReadConsole - Reads input data from the console and removes it from the buffer
WriteConsole - Writes a string to the console at the cursor position
 
  The simplest example that I can give is:
 
  AllocConsole();
 HANDLE stdout ;
 DWORD count ;
 stdout = GetStdHandle( STD_OUTPUT_HANDLE );
 WriteConsole(stdout, "Test", 4, &count, NULL );
 FreeConsole();   |  
  
 
I recommend looking at the MSDN pages for more information:
  http://msdn.microsoft.com/library/en-us/fileio/hh/winbase/conchar_5ehx.asp
 | 
 
 
 
The zip file viewer built into the Developer Toolbox made use
of the zlib library, as well as the zlibdll source additions.
 
 
 |