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来分离进程。

执行此函数后,控制台将会自动关闭,并且不会影响主程序的运行。

posted @ 2024-03-14 21:25  饼干`  阅读(13)  评论(0编辑  收藏  举报