vc++中如何讓控制台程序不彈出DOS窗口


vc++中如何讓控制台程序不彈出DOS窗口

  (2011-03-31 10:31:33)
標簽: 

雜談

分類: win32
操作系統裝載應用程序后,做完初始化工作就轉到程序的入口點執行。程序的默認入口點實際上是由連接程序設置的,不同的連接器選擇的入口函數也不盡相同。在 VC++下,連接器對控制台程序設置的入口函數是mainCRTStartup,mainCRTStartup 再調用你自己編寫的 main 函數;對圖形用戶界面(GUI)程序設置的入口函數是 WinMainCRTStartup,WinMainCRTStartup 調用你自己寫的 WinMain 函數。而具體設置哪個入口點是由連接器的“/subsystem:”選項參數確定的,它告訴操作系統如何運行編譯生成的.EXE文件。可以指定四種方 式:“CONSOLE|WINDOWS|NATIVE|POSIX”如果這個選項參數的值為“WINDOWS”,則表示該應用程序運行時不需要控制台,有 關連接器參數選項的詳細說明請參考 MSDN 庫。

以下四種組合,可以實現console和windows模式的混合,可以達到不彈出DOS窗口的效果,也可以達到在Windows程序中向控制台輸出printf信息了。
#pragma comment( linker, "/subsystem:windows /entry:WinMainCRTStartup" )
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )

#pragma comment( linker, "/subsystem:console /entry:mainCRTStartup" )
#pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup" )


int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR      lpCmdLine,
int        nCmdShow)
{
     // ... ...
}

int main(void)
{
     // ... ...
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM