在VS中为GUI程序添加console

来源:互联网 发布:hibernate执行原生sql 编辑:程序博客网 时间:2024/05/28 06:06
开发中使用printf,cout等函数能够很方便地从console监控程序运行,
但是对于GUI程序,虽然程序中使用了printf,cout但是无法查看stdout,stderr的输出
 
有几种方法可以查看GUI程序的输出(VS)
1.使用VC的trace函数代替printf,但是必须include StdAfx.h,输出会显示在ouput窗口中,但是会跟其他的信息混在一起,不是很方便
2.将stdout、stderr输出转向到文件,类似log文件
3.使用WINDOWS提供的一系列ReadConsole,WriteConsole等API来完成这个功能,具体参见MSDN,可以将这些API封装成自己的console类,然后创建一个进程去监视console的输入输出  (使用方法参考http://blog.chinaunix.net/u2/67530/showart_600981.html )
 
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); // 获取标准输出设备句柄
HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE); // 获取标准输入设备句柄
WriteConsole(hOut, "success!", 7, NULL, NULL);
 
4.使用VC的Post-builder :设置位置在Project | Properties->Configuration Properties->Build Events->Post-Build Event
在Command Line新加一行命令:editbin /SUBSYSTEM:CONSOLE $(OutDir)\filename.exe
(其中 filename 为可执行文件名) ,成功后你的GUI程序运行的时候就多了一个console控制台,比较cool
并且cout 输出的东西都会传到console控制台
PS:工程可能需要关闭重新打开
 
摘自
http://blog.csdn.net/zdl1016/archive/2008/09/16/2936171.aspx
原创粉丝点击