How to get ride of console box of a GUI program compile by MinGW + Code::Block

◇◆丶佛笑我妖孽 提交于 2019-12-17 16:40:09

问题


When I compile and run a simple Win32 GUI program in MinGW+MSys with command line:

$ g++ main.cpp -o app -std=c++0x

$ ./app

only a dialog box shows. But when I put this program into Code::Blocks IDE and compile it, it always results in a black console box with the dialog. Adding -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;
}

How can I get rid of the console box?


回答1:


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:

  1. Click Project on the CodeBlocks menu.
  2. Click Properties.
  3. Click the second tab, Build Targets.
  4. On the right, where it says Type: Console application, change it to GUI application.
  5. Rebuild the project.


来源:https://stackoverflow.com/questions/10003777/how-to-get-ride-of-console-box-of-a-gui-program-compile-by-mingw-codeblock

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!