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);      //移除关闭

 

 

下面是向控制台写的方法,两种:

(1)直接printf或cout

1 printf("Hello World!\n"); // 写数据

 


(2)

1 HANDLE   outPut; 
2 outPut   =   GetStdHandle(STD_OUTPUT_HANDLE); 
4 WriteConsole(outPut,"Hello World!\n", strlen("Hello World!\n"),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  }