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 }