向MFC應用程序添加控制台窗口


簡介

    如果你曾經寫過MFC應用程序,也許你忽略了控制台窗口。熟悉了控制台窗口的人會認為它是如此的便捷,我就是一個,認為printf或者cout是最優秀的調試函數,可以在不打開任務管理器的情況下在控制台中僅僅按下CTRL+C來結束不響應的程序。不幸的是,MFC應用程序默認情況下並不支持控制台。但是在你的應用程序加入一小段代碼后,然后改變連接選項你就可以解決這個問題

 

l         對於Visual Studio .NET

l         對於 Visual Stduio 98 (Visual C++ 6.0)

l         它是如何工作的?

 

對於Visual Studio .NET

請根據下面的步驟做:

 

1.         復制以下代碼保存為"mfcconsole.cpp",在Visual Studio .NET選擇"Project"菜單的"Add Existing Item",把"mfcconsole.cpp"加進來

 

#include "stdafx.h"

#include <stdio.h>

#include <windows.h>

 

extern "C"

{

int PASCAL WinMain(HINSTANCE inst,HINSTANCE dumb,LPSTR param,int show);

};

 

int main(int ac,char *av[])

{

         char buf[256];

         int i;

         HINSTANCE inst;

         inst=(HINSTANCE)GetModuleHandle(NULL);

         buf[0]=0;

         for(i=1; i<ac; i++)

         {

                   strcat(buf,av[i]);

                   strcat(buf," ");

         }

       return WinMain(inst,NULL,buf,SW_SHOWNORMAL);

}

 

2.         有時不知什么原因vs不編譯某些已包含的文件,這個時候,選擇"Solution Explorer"屬性頁,然后右鍵單擊"mfcconsole.cpp"文件選擇"Property",按下面的圖解設置

 

 

 

 

3.         "Solution Explorer" 屬性頁選擇項目名字,右鍵屬性,設置如下

 

 

 

編譯一下看看效果o(_)o…,如果你想刪除控制台,你只需要將上圖的SubSystem恢復至/SUBSYSTEM:WINDOWS

 

對於 Visual Stduio 98 (Visual C++ 6.0)

 

Here's how to add a printf-able console window to your MFC application.

 

1.       .net的(1

  

2. 右鍵單擊mfcconsole.cpp文件,選擇” Setting”,設置如下圖:

 

 

 

 3. 在項目菜單中點擊設置,設置如下圖,將"/subsystem:windows"改為"/subsystem:console"

 

 

 

它是如何工作的

連接選項"/subsystem:*****"控制程序是否有一個控制台窗口,

l         如果是"/subsystem:console":程序啟動控制台,從main函數開始執行

l         如果是"/subsystem:windows":不啟動控制台,從WinMain開始執行

 

三、

 

#include   <io.h>

 

#include   <fcntl.h>

 

#include   <io.h>

 

#include   <fcntl.h>

 

void   OpenConsole()

 

{

 

AllocConsole();

 

HANDLE   handle   =   GetStdHandle(STD_OUTPUT_HANDLE);

 

int   hCrt   =   _open_osfhandle((long)handle,_O_TEXT);

 

FILE   *   hf   =   _fdopen(   hCrt,   "w"   );

 

*stdout   =   *hf;

 

}

 

添加CXXApp為成員函數

 

InitInstance調用OpenConsole();

 

就可以調出Console用print輸出了

 


免責聲明!

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



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