窗口中的控制台

                                                        窗口程序中的控制台

         很多朋友写窗口程序的时候,调试的时候在很多输出的地方使用 MessageBox 进行调试,更令人烦心的就是我们的好多参数必须使用 sprintf wsprintf 转换为字符串传给我们的 MessageBox 参数 . 很是麻烦,很多朋友这时候就开始欢迎我们控制台使用 printf 时的快乐时光了,无须任何转换,直接使用格式字符串就可以输出,很是方便。其实在窗口程序中我们也可以使用控制台 .

BOOL WINAPI AllocConsole(void);

这个函数的作用就是给我们的程序分配一个控制台 . 那么对应的函数 ;

BOOL WINAPI FreeConsole(void);

用来释放一个控制台 .

我们在我们的程序中加入 AllocConsole(); 就可以为程序分配一个控制台了,但是我们仍是无法使用 printf 往控制台上进行输出 . 因为窗口程序默认的输出方向不是控制台,我们需进行输出重定向 . 改变默认的输出方向到控制台 . 所以我们就找到了函数 :

 

FILE *freopen(

   const char * path ,

   const char * mode ,

   FILE * stream

);

FILE *_wfreopen(

   const wchar_t * path ,

   const wchar_t * mode ,

   FILE * stream

);

这个函数就是专门用于输入输出重定向的,我们看下他的参数 :

path

你重新定义后的路径,这里可以是一个带路径文件名 .

mode

这是访问该文件的模式,如 : 只读,只写,读写等 .

stream

一个文件流指针 .

而我们这里重定向的方向不是一个文件,而是控制台,那么我们第一个参数该传什么呢。网上的答案是这样的 :

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

好了,天上这句代码我们就可以使用 printf 往控制台上进行输出了,但有些时候我们可能会与之交互,还需要从控制台输入,那么不要紧,我们在进行一个输入重定向就可以了 :

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

这样就 OK 了,简单吧,要想在窗口程序中拥有一个可以输入和输出的控制台就这么简单 :

1.      AllocConsole();

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

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

这下在调试我们的窗口程序时我们不用再为我们的 MessageBox sprintf 而烦恼了 . 呵呵 .

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值