|
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.
|