在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来分离进程。
执行此函数后,控制台将会自动关闭,并且不会影响主程序的运行。
标签:fp,FreeConsole,关闭,项目,UI,freopen,控制台 From: https://www.cnblogs.com/Super-biscuits/p/18074025