2012-04-18 80 views
0

使用下面的代碼,控制檯是隱藏的,但它出現約1秒。如何完全隱藏Win32程序中的控制檯?

我該如何完全隱藏控制檯?

#define _WIN32_WINNT 0x0500 
#include <windows.h> 
#include <iostream> 

using namespace std; 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR cmdLine, int cmdShow){ 

HWND hWnd = GetConsoleWindow(); 
ShowWindow(hWnd, SW_HIDE); 

MessageBox(NULL, TEXT("Hello!"), TEXT("yuhuuu"), 0); 
return 0; 
} 
+0

您正在使用MSVC還是MinGW? – Anders 2012-04-18 09:20:39

回答

1

你的編譯器設置有些奇怪。 (所以我假設MSVC沒有指定你的編譯器)

從您的示例WinMain入口點函數由GUI應用程序使用(鏈接器開關/SUBSYSTEM:WINDOWS),除非你調用這些應用程序沒有得到一個控制檯AllocConsole。

如果您鏈接到/ SUBSYSTEM:CONSOLE,那麼Windows將在您的代碼執行之前爲該過程創建控制檯,但這些應用程序的正常入口點是普通舊main函數。

您是否用/ ENTRY開關強制進入點?無論哪種方式,確保/ SUBSYSTEM開關和入口點函數定義是兼容的,並且與要創建的應用程序的類型(GUI或控制檯)相匹配

+0

我正在使用Code :: Blocks :) – xRobot 2012-04-18 09:21:29

+0

Code :: Blocks是一個IDE,而不是一個編譯器,它支持MinGW/GCC和MSVC ... – Anders 2012-04-18 09:25:16

+0

ops ...我怎麼知道我在用什麼編譯器? – xRobot 2012-04-18 09:32:32