您的位置:首页 > 其它

MFC 控制台输出

2015-08-04 12:23 357 查看
http://pydoncy.blog.163.com/blog/static/1438083902011101902437190/

利用AllocConsole()

在你的MFC程序中添加这些代码,可以获得控制台的输入,你试试

AllocConsole();

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

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

cout << "Input:" <<endl;

int iTest = 0;

cin >> iTest;

fclose(stdout);

fclose(stdin);

FreeConsole();

afxDump << "Input Content:" << iTest << endl;





记住,及时在一个GUI程序中,你也可以有一个控制台

好处:

1 不像窗口控件,依赖消息和重绘

2 程序飞掉了,控制台还在

3 方便的重定向到文本,可以用比较工具比较





在某些时候,我们可能需要在Win32窗口应用程序中打开控制台窗口,打印一些消息,或者作为当前程序的另外一个人机交互界面,或者为了帮助调试程序。为了达到这种效果,需要了解函数AllocConsole和C-Runtime的freopen函数。

AllocConsole函数会为当前的窗口程序申请一个Console窗口。这是MSDN上对AllocConsole的介绍:


AllocConsole

The AllocConsole function allocates a new console for the calling process.


BOOL AllocConsole(void);
函数调用成功,返回非零值,调用不成功则返回0.

在为当前窗口程序申请到console后,我们需要调用C-Runtime的freopen函数将标准输出(stdout)重定位到新申请的console。

freopen的原型如下:


FILE *freopen(


const char *path,


const char *mode,


FILE *stream


);
我们调用的时候是这么着传入参数的:


freopen("CONOUT$","w",stdout);
其中"CONOUT$"是指代当前console的特殊字符串,"w"表明以written模式打开这个console,stdout指代的是系统的标准输出设备。

下面是整个的代码:


if(AllocConsole())

http://blog.csdn.net/acaiacc/article/details/5543669
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: