GUI視窗程式用控制台顯示執行狀態資訊

2021-06-08 06:22:31 字數 1348 閱讀 5870

很多朋友寫視窗程式的時候,除錯的時候在很多輸出的地方使用 messagebox 進行除錯,更令人煩心的就是我們的好多引數必須使用 sprintf 或 wsprintf 轉換為字串傳給我們的 messagebox 引數 . 很是麻煩,很多朋友這時候就開始歡迎我們控制台使用 printf 時的快樂時光了,無須任何轉換,直接使用格式字串就可以輸出,很是方便。其實在視窗程式中我們也可以使用控制台 .

bool winapi allocconsole(void);

這個函式的作用就是給我們的程式分配乙個控制台 . 那麼對應的函式 ;

bool winapi freeconsole(void);
用來釋放乙個控制台 .

我們在我們的程式中加入 allocconsole(); 就可以為程式分配乙個控制台了,但是我們仍是無法使用 printf 往控制台上進行輸出 . 因為視窗程式預設的輸出方向不是控制台,我們需進行輸出重定向 . 改變預設的輸出方向到控制台 . 所以我們就找到了函式 :

file *freopen(

const char * path

, const char * mode

, file * stream

); file *_wfreopen(

const wchar_t * path

, const wchar_t * mode

, file * stream);

這個函式就是專門用於輸入輸出重定向的,我們看下他的引數 :

path

你重新定義後的路徑,這裡可以是乙個帶路徑檔名 .

mode

這是訪問該檔案的模式,如 : 唯讀,只寫,讀寫等 .

stream

乙個檔案流指標 .

而我們這裡重定向的方向不是乙個檔案,而是控制台,那麼我們第乙個引數該傳什麼呢。網上的答案是這樣的 :

freopen("conout$","w+t",stdout);

好了,天上這句**我們就可以使用 printf 往控制台上進行輸出了,但有些時候我們可能會與之互動,還需要從控制台輸入,那麼不要緊,我們在進行乙個輸入重定向就可以了 :

freopen("conin$","r+t",stdin);

這樣就 ok 了,簡單吧,要想在視窗程式中擁有乙個可以輸入和輸出的控制台就這麼簡單 :

1.      allocconsole();

2.      freopen("conout$","w+t",stdout);

3.      freopen("conin$","r+t",stdin);

這下在除錯我們的視窗程式時我們不用再為我們的 messagebox 和 sprintf 而煩惱了 . 呵呵 .

設定程式 不顯示控制台視窗

1,在程式開始時呼叫freeconsole windows.h 2,在vc開發環境的控制台還是會有的,因為那是vc調的,不過你的程式不會輸出到那個控制台罷了 在工程屬性裡面分別設定linker system subsystem為windows subsystem windows linker adv...

沒有控制台視窗的控制台程式

include include pragma comment linker,subsystem windows entry maincrtstartup int main int argc,char argv 編譯後執行程式會彈出乙個訊息框,而沒有背後的控制台視窗。再看看下面的 include in...

在控制台程式中隱藏控制台視窗

因為此種方法是通過設定編譯器的鏈結開關來實現,所以讓我們來看一下編譯 器的鏈結開關選項 也就是linker選項 首先我們來看一下linker的 subsystem 選項 這個鏈結選項告訴作業系統如何執行可執行檔案 console win32 字元模式應用程式,此種型別的應用程式在執行的時候會產生乙個...