在Win32应用程序中添加控制台窗口

1.  背景知识介绍

1.Win32 Handles和RTL Handles
标准C定义的文件操作类型为FILE*
Win32 API定义文件操作的类型为 HANDLE,  在Windows平台上, 标准C的输入输出函数是HANDLE实现, 标准C的输入输出FILE* 类型会和相应的HANDLE关联。
标准C函数预定义了三个FILE* 变量:  stdin, stdout和stderr
Win32 也分别定义了这三个HANDLE, 可以通过HANDLE GetStdHandle() 函数取得

GetStdHandle 参数:
STD_INPUT_HANDLE
STD_OUTPUT_HANDLE
STD_ERROR_HANDLE
这些HANDLE都可以重定向到文件或者控制台窗口,Win32 GUI程序没有控制台窗口,所以Win32的这三个File HANDLE也没有指向Standard input, output, error,  但是我们可以将这三个 FILE HANDLE重定向到控制台窗口,然后将标准C FILE* 关联到这些HANDLE。然后我们就可以正常使用C标准输入输出函数了。

其他用到的函数
_open_osfhandle() 函数, 返回一个RTL handle, 这个RTL handle与Win32  FILE HANDLE相关联, 通过这个RTL handle重定向I/O

FILE *_fdopen(int fd, const char *mode ); 基于文件描述符打开一个C输入输出流 


代码

 

测试

 

参考

http://www.halcyon.com/~ast/dload/guicon.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值