When I test compile a simple Win32 GUI program in MinGW+MSys with command line and run it:
$ g++ main.cpp -o app -std=c++0x
$ ./app
only a dialog box shows. But put this program into Code::Block IDE and compile it, it aways plus a black console box with the dialog. Add -mwindows in link options no effect.
main.cpp
#include <windows.h>
int WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
MessageBox(0,"Hello, Windows","MinGW Test Program",MB_OK);
return 0;
}
-Wl,--subsystem,windows
is that it only doesn't work inside the IDE. If you run it from explorer, it will not have a console window. I just thought you'd like to know - chris 2012-12-20 14:57
Put it in a project, and in the project settings there's an option to not have a console window.
If you can't be bothered to have it in a project, a call to ShowWindow (GetConsoleWindow(), SW_HIDE);
will make it flash on the screen and then disappear. Note that you must #define _WIN32_WINNT
as 0x0500
or greater before including windows.h to have access to GetConsoleWindow()
. I'll come back in a bit with a specific location to disable it.
//hide console window at start
#define _WIN32_WINNT 0x0501 //this is for XP
#include <windows.h>
int main()
{
ShowWindow (GetConsoleWindow(), SW_HIDE);
//rest of program here
}
EDIT: Found it, here's how to not have a console window: