Some may already know this little trick in Visual C++ (6.0), but I just ran across it last night.
I'm currently working on a game framework for windows that doesn't care if you are running as a windowed or console application. And I've been looking for a nice way of wrapping the functionality of switching between the two modes as some kind of macro set. After a fair bit of twiddling, I've put together the following little code snippet.
// Uncomment the next line and define the appropriate
// subsytem in the linker
#pragma comment( linker, "/subsystem:windows" )
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
#pragma comment( linker, "/subsystem:console" )
int main(int argc, char* argv )
Yeah, it's an ugly looking directive set and there have got to be at least half a dozen ways to make it pretty. However, the point is, by defining _CONSOLE, I get a console application. By leaving it as is, I get a windowed application. Providing that I do the appropriate code for creating a window.
Why do this? Well, recently I've been seeing a lot of COTD's that have been talking about output to a console. Seems to me that if you replace _CONSOLE with _DEBUG ... you can get a relatively cheap log window.
Your thoughts? Suggestions? Anyone want to try this on a compiler other than VC++?
The zip file viewer built into the Developer Toolbox made use
of the zlib library, as well as the zlibdll source additions.