Fortran Coder

标题: windows程序如何关闭console窗口 [打印本页]

作者: addison    时间: 2014-9-8 15:00
标题: windows程序如何关闭console窗口
本帖最后由 addison 于 2014-9-8 15:02 编辑

看了站长的使用allocconsole()或creat()函数来调用console窗口,通过ivf+winteracter实验,效果非常好。

调用语句:
iRes = CreateFile( "logo.txt" , GENERIC_WRITE , FILE_SHARE_WRITE , NULL , OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , 0 )
iRes = SetStdHandle(STD_OUTPUT_HANDLE , iRes)


现在有一问题请教:我希望能在windows程序中,把输出到“logo.txt”的console窗口内容重写到windows下的string窗口,


但非常遗憾的是,windows主窗口一直占用console窗口,不能对“logo.txt”文件进行任何操作。


尝试用
ires= GetStdHandle(STD_OUTPUT_HANDLE)
ires=CloseHandle( ires)
  

来关掉console通道,但是失败。
尝试直接从console的通道直接读取数据,也失败。


请教高手,能否解决这个问题。


初学windows编程,还望赐教。多谢!

作者: fcode    时间: 2014-9-9 07:50
没太听懂
1.console是你自己创建的吗?你为何要关闭它?
2.你的目的是什么?让你无法控制的 write(*,*) 输出到某窗口?
作者: addison    时间: 2014-9-9 15:46
本帖最后由 addison 于 2014-9-9 15:51 编辑

我用ivf+winteracter编GUI程序,在程序中创建隐藏的console窗口接收信息到logo.txt文件。

问题是:我希望用户看不到console窗口,但我希望把console的信息重新输出到当前工作界面(window)的某个窗口,方便用户查看。

因为原来的fortran程序可能会输出某些有用的程序运行信息或错误信息,用户到logo.txt查看很麻烦,而且目前,我的window gui程序只有退出后,才能看logo.txt,不能得到实时consol窗口内容。
怎样实现console窗口信息及时出现在当前GUI界面的某个string窗口内?

希望把问题讲明白了。多谢!

作者: fcode    时间: 2014-9-9 17:11
OK ,我懂你的意思了。

1.如果你能修改之前的代码。那是最方便的。把 write 统一替换为某函数既可。
2.如果你无法修改之前的代码。那就麻烦一些了。Winteracter里面貌似没有现成的函数,你可能需要了解一下“管道”方面的知识。
3.大多数 IDE 编译环境,显示错误提示,都是使用管道,获取编译器(console)的输出。
作者: addison    时间: 2014-9-9 21:47
管道知道一点,用的比较少。能否举个简单的例子,IDE如何实现console的管道输出?

作者: necrohan    时间: 2015-11-27 10:16
这个帖子比较老,原谅我挖坟。
这段时间我在用winteracter,不明白为什么创建隐藏的console窗口。
winteracter可以用WEditFile打开文本窗口,可以在原窗口中分割,也可以单独的,所有文本信息都可以输进去。
作者: 楚香饭    时间: 2015-11-27 11:50
因为他以前的代码都是写入 log.txt 的,估计代码量较多,不便修改。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2