MFC下呼び出しコンソールとコンソール下MFCライブラリのサポート

7392 ワード


 
 
 
 
1.MFCでコンソールを呼び出す
CWinAppのInitInstanceダイアログボックスのDoModalの前に
1 AllocConsole();                                          //  
2 SetConsoleTitle(_T(" "));                  //  
3 freopen("CONOUT$","w",stdout);                //  
4 freopen( "CONIN$", "r+t", stdin );              //  

CWinAppのExitInstanceに参加
1 FreeConsole();// 

 
コンソールを直接閉じるとエラーが発生するため、閉じることを無効にします.
ダイアログボックスのOnInitDialogで
1 char   szBuf[100]; 
2 GetConsoleTitle(szBuf,   100);                 // 
3 HWND   hwnd   =   ::FindWindow(NULL,   szBuf);      //  
4 HMENU   hmenu   =   ::GetSystemMenu(hwnd,   FALSE);   // 
5 ::RemoveMenu(hmenu,   SC_CLOSE,MF_BYCOMMAND);      // 

 
 
次に、コンソールに書く方法を2つ示します.
(1)直接printfまたはcout
1 printf("Hello World!
"); //

 
(2)
1 HANDLE   outPut; 
2 outPut   =   GetStdHandle(STD_OUTPUT_HANDLE); 
4 WriteConsole(outPut,"Hello World!
", strlen("Hello World!
"),NULL,NULL);

 
2.コンソールプログラムの下でMFCライブラリのサポートを追加する方法1.メニューバーの項目をクリックします
2.右側MFCの使用で「共有DLLでMFCを使用」を選択
3.stdafxを新規作成します.hヘッダファイルに、以下のコードを追加します.
 1 #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // some CString constructors will be explicit
 2  
 3  #ifndef VC_EXTRALEAN
 4  #define VC_EXTRALEAN            // Exclude rarely-used stuff from Windows headers
 5  #endif
 6  
 7  #include <afx.h>
 8  #include <afxwin.h>         // MFC core and standard components
 9  #include <afxext.h>         // MFC extensions
10  #ifndef _AFX_NO_OLE_SUPPORT
11  #include <afxdtctl.h>           // MFC support for Internet Explorer 4 Common Controls
12  #endif
13  #ifndef _AFX_NO_AFXCMN_SUPPORT
14  #include <afxcmn.h>                     // MFC support for Windows Common Controls
15  #endif // _AFX_NO_AFXCMN_SUPPORT
16  
17  #include <iostream>

 
4.cppファイルにヘッダファイルinclude「stdafx.h」を含める
5.例:
 1 #include "stdafx.h"
 2  using namespace std;
 3  int main(void)
 4  {
 5      CString str("Hello World");
 6      AfxMessageBox(str);
 7      USES_CONVERSION;
 8      char * pstr = T2A(str);
 9      cout << pstr;
10  }