UI项目中显示控制台
在UI项目中显示控制台。
以下在Windows系统上使用MFC创建控制台,默认Qt的操作也是一样的,包括其他的C++ UI库,因为这里只涉及API操作。
在UI项目中创建控制台,需要注意:
1、控制台资源属于系统资源,他是一个独立的进程。
2、一个控制台创建后,他被绑定到当前的App进程中,一个进程只能绑定一个控制台资源。
看下代码:
// 在你需要的位置编写函数内的代码,来创建一个控制台
void MyThread::OpenConsole(WPARAM wparam, LPARAM lparam) { AllocConsole(); freopen_s(&fp[0], "CONOUT$", "w+", stdout); freopen_s(&fp[1], "CONIN$", "r+", stdin); }
freopen_s 他的参数:
1、FILE* 用于指向控制台的资源句柄。
2、表示输出的目标,因为是控制台,所以就是上面的写法,如果不是控制台,比如你想在执行printf等操作的时候,输出到文件,那么这个参数就可以写成文件的名字,例如:“1.xtx"
3、标准输入输出模式。
执行此代码后,UI程序将会创建一个控制台,并且绑定到当前进程,所执行的标准输入输出,都将会在控制台中显示和完成。
下面看一下,如何关闭控制台,(不能直接X掉控制台,因为这会导致主程序结束):
// 在你需要的位置编写函数内的代码,来关闭一个控制台
void MyThread::ColseConsole(WPARAM wparam, LPARAM lparam) { fclose(fp[0]); fclose(fp[1]); FreeConsole(); }
要关闭控制台,只FreeConsole是不够的,需要关闭他的文件句柄,然后再使用FreeConsole来分离进程。
执行此函数后,控制台将会自动关闭,并且不会影响主程序的运行。
分类:
Win 32 API
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端