2013-03-09 111 views
0

儘管我在我的應用程序中使用了DirectX以及通常的WinMain函數,但如果應用程序是以特定參數啓動的,那麼我想創建輸出到控制檯(通常爲std::cout)。讓我們將事情簡單化:如果用戶使用--help參數調用應用程序,則應該顯示一些幫助(使用boost::program_options);否則,一切應該通常通過創建一個窗口等工作將基於控制檯和基於Windows的應用程序結合起來

即使在我的Windows應用程序中,我怎麼能寫輸出到控制檯(如果應用程序被調用通過一個)?


背景資料:總的想法是,我運行遊戲引擎之前,我將能夠運行一些工具(無論是外部的,或納入引擎),並得到它們的輸出。


當前方法。我現在有兩個單獨的應用程序,一個啓動程序和引擎,但是我希望儘可能合併它們。

回答

2

如果您只需要爲WinMain GUI應用程序創建控制檯窗口,則需要調用AllocConsole函數。每個流程只限制一個。

例用C ...

#include <stdio.h> 

WinMain(...) { 

    // parse the command line and check if --help is given 

    AllocConsole(); // allocates console window for your process 

    freopen("CON", "w", stdout); // redirects output to console 

    printf(...); // test output to the console window 

    FreeConsole(); // detaches your process from the console window 

    // continue here 

} 

這隻會創建點播控制檯窗口,如果你需要使用像printf功能從GUI應用程序中顯示的東西。它不會讓你的應用程序同時具有控制檯和GUI子系統。你需要兩個.exe,所以你現在的方法是正確的。

相關問題