Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在我的GUI表单后面有一个恼人的空白控制台_C++_Windows_Gcc_Console_G++ - Fatal编程技术网

C++ 在我的GUI表单后面有一个恼人的空白控制台

C++ 在我的GUI表单后面有一个恼人的空白控制台,c++,windows,gcc,console,g++,C++,Windows,Gcc,Console,G++,我使用GCC(g++)编译器编译这个小程序。结果可执行文件很好,但当我运行它时,它会出现一个恼人的空白控制台窗口!:( #包括 LRESULT回调WndProc(HWND、UINT、WPARAM、LPARAM); 静态字符gszClassName[]=“暗蓝色”; 静态实例=NULL; int WINAPI WinMain(HINSTANCE HINSTANCE、HINSTANCE HPPreInstance、LPSTR lpCmdLine、int nCmdShow){ WndClass x W

我使用GCC(g++)编译器编译这个小程序。结果可执行文件很好,但当我运行它时,它会出现一个恼人的空白控制台窗口!:(

#包括
LRESULT回调WndProc(HWND、UINT、WPARAM、LPARAM);
静态字符gszClassName[]=“暗蓝色”;
静态实例=NULL;
int WINAPI WinMain(HINSTANCE HINSTANCE、HINSTANCE HPPreInstance、LPSTR lpCmdLine、int nCmdShow){
WndClass x WndClass;
HWND-HWND;
味精;
ghInstance=hInstance;
WndClass.cbSize=sizeof(WNDCLASSEX);
WndClass.style=NULL;
WndClass.lpfnWndProc=WndProc;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hInstance=ghInstance;
WndClass.hIcon=LoadIcon(空,IDI_应用程序);
WndClass.hCursor=LoadCursor(空,IDC_箭头);
WndClass.hbrBackground=(HBRUSH)(颜色窗口+1);
WndClass.lpszMenuName=NULL;
WndClass.lpszClassName=gszClassName;
WndClass.hIconSm=LoadIcon(空,IDI_应用程序);
如果(!RegisterClass(&WndClass)){
消息框(0,“窗口注册失败!”,“错误!”,MB_ICONSTOP|MB_OK);
返回0;
}
hwnd=CreateWindowEx(
WS_EX_STATICEDGE,
gszClassName,
“暗蓝色owNz!”,
WS_重叠窗口,
CW_USEDEFAULT,CW_USEDEFAULT,
320, 240,
空,空,,
例如,,
无效);
if(hwnd==NULL){
消息框(0,“窗口创建失败!”,“错误!”,MB|U ICONSTOP|MB|U OK);
返回0;
}
显示窗口(hwnd、nCmdShow);
更新窗口(hwnd);
while(GetMessage(&Msg,NULL,0,0)){
翻译信息(&Msg);
发送消息(&Msg);
}
返回Msg.wParam;
}
LRESULT回调WndProc(HWND HWND,UINT消息,WPARAM WPARAM,LPARAM LPARAM){
开关(信息){
案例WM_结束:
窗口(hwnd);
打破
案例WM_销毁:
PostQuitMessage(0);
打破
违约:
返回DefWindowProc(hwnd、Message、wParam、lParam);
}
返回0;
}

您正在编译代码,以
控制台
子系统为目标,这就是应用程序执行时出现黑色控制台窗口的原因

这是GCC中的默认选项,可能是因为它很容易操作:您只需要几行
cout
就可以立即在屏幕上获取文本。使用console窗口,您不必像这里所做的那样经历创建窗口等所有麻烦

在本例中,您实际上希望链接到
WINDOWS
子系统。这就是创建典型GUI应用程序的方式。有两种方法:

  • 您可以在命令行上指定
    -mwindows
    链接器选项
  • 您可以将以下行添加到makefile中的链接器标志:

    -Wl,-subsystem,windows
    

  • 你能把屏幕截图贴在窗口上吗?
    -Wl,-subsystem,windows