我的 GUI 表单后面令人讨厌的空白控制台
Posted
技术标签:
【中文标题】我的 GUI 表单后面令人讨厌的空白控制台【英文标题】:Annoying blank console at the back of my GUI form 【发布时间】:2012-02-10 07:51:48 【问题描述】:我使用 GCC (g++) 编译器编译这个小程序。结果可执行文件很好,但是当我运行它时,它会出现一个烦人的空白控制台窗口! :(
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
static char gszClassName[] = "darkblue";
static HINSTANCE ghInstance = NULL;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
WNDCLASSEX WndClass;
HWND hwnd;
MSG Msg;
ghInstance = hInstance;
WndClass.cbSize = sizeof(WNDCLASSEX);
WndClass.style = NULL;
WndClass.lpfnWndProc = WndProc;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hInstance = ghInstance;
WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
WndClass.lpszMenuName = NULL;
WndClass.lpszClassName = gszClassName;
WndClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&WndClass))
MessageBox(0, "Window Registration Failed!", "Error!", MB_ICONSTOP | MB_OK);
return 0;
hwnd = CreateWindowEx(
WS_EX_STATICEDGE,
gszClassName,
"darkblue owNz!",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
320, 240,
NULL, NULL,
ghInstance,
NULL);
if(hwnd == NULL)
MessageBox(0, "Window Creation Failed!", "Error!", MB_ICONSTOP | MB_OK);
return 0;
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&Msg, NULL, 0, 0))
TranslateMessage(&Msg);
DispatchMessage(&Msg);
return Msg.wParam;
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam)
switch(Message)
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, Message, wParam, lParam);
return 0;
【问题讨论】:
你可以发布屏幕截图窗口吗? 【参考方案1】:您正在编译您的代码以定位 CONSOLE
子系统,这就是为什么在执行您的应用程序时会出现黑色控制台窗口的原因。
这是 GCC 中的默认选项,可能是因为它很容易上手:您只需要几行 cout
就可以立即在屏幕上显示文本。使用控制台窗口,您不必像在此处所做的那样经历创建窗口等的所有麻烦。
在这种情况下,您实际上想要链接到WINDOWS
子系统。这就是创建典型 GUI 应用程序的方式。有两种方法可以做到这一点:
-
您可以在命令行中指定
-mwindows
链接器选项。
您可以将以下行添加到您的 makefile 中的链接器标志:
-Wl,-subsystem,windows
【讨论】:
以上是关于我的 GUI 表单后面令人讨厌的空白控制台的主要内容,如果未能解决你的问题,请参考以下文章