C++ 如何使用MinGW&x2B编译的GUI程序的控制台盒;代码::块

C++ 如何使用MinGW&x2B编译的GUI程序的控制台盒;代码::块,c++,mingw,codeblocks,C++,Mingw,Codeblocks,当我使用命令行在MinGW+MSys中编译并运行一个简单的Win32 GUI程序时: $g++main.cpp-o app-std=c++0x $。/app 仅显示一个对话框。但当我将这个程序放入Code::Blocks IDE并编译它时,它总是会生成一个带有对话框的黑色控制台框。在链接选项中添加-mwindows无效 main.cpp: #include <windows.h> int WinMain(HINSTANCE,HINSTANCE,LPSTR,int) { Mes

当我使用命令行在MinGW+MSys中编译并运行一个简单的Win32 GUI程序时:

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

$。/app

仅显示一个对话框。但当我将这个程序放入Code::Blocks IDE并编译它时,它总是会生成一个带有对话框的黑色控制台框。在链接选项中添加
-mwindows
无效

main.cpp:

#include <windows.h>
int WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
    MessageBox(0,"Hello, Windows","MinGW Test Program",MB_OK);
    return 0;
}
#包括
int WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
消息框(0,“你好,Windows”,“MinGW测试程序”,MB_OK);
返回0;
}

如何摆脱控制台框?

将其放在项目中,在项目设置中,有一个选项可以不使用控制台窗口

如果您不想在项目中使用它,可以调用
ShowWindow(GetConsoleWindow(),SW_HIDE)将使其在屏幕上闪烁,然后消失。请注意,在包含windows.h之前,您必须将wint定义为
0x0500
或更高版本,才能访问
GetConsoleWindow()
。我稍后会返回一个特定的位置来禁用它

//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
}
//在开始时隐藏控制台窗口
#定义_WIN32_WINNT 0x0501//这是用于XP的
#包括
int main()
{
显示窗口(GetConsoleWindow(),SW_HIDE);
//程序的其余部分在这里
}
编辑: 找到它,以下是如何不使用控制台窗口:

  • 单击“代码块”菜单上的“项目”
  • 单击属性
  • 单击第二个选项卡“构建目标”
  • 在右边,显示Type:Console-application,将其更改为GUI-application
  • 重建项目

  • 你试过这篇博文作者使用的选项吗?在“构建选项>其他选项”下,它们有“-Wl,-subsystem,windows“-“--Wl,-subsystem,windows”在代码块IDE中不工作,我将其添加到编译器和链接器选项仍然显示我的控制台框中。@bo0k,我知道这已经很久了,但如果您刚刚忘记了这一点,我刚才问是否有任何方法可以在没有项目的情况下实现这一点,由于我尝试的链接器选项不起作用,而
    -Wl,--subsystem的“问题”是windows
    仅在IDE内部不起作用。如果从资源管理器运行,它将没有控制台窗口。我只是想让你知道,在代码块中,哪个选项?当我使用命令行时,它是正常的。我认为codeblock应该添加一些编译或链接选项来显示控制台,但我不知道如何找到正在运行的命令codeblock。我不确定是否有任何特定于C::B的命令行构建选项。但我知道这种方式在GUI中也可以使用