MFC调用CMD控制台_输入缓冲区

 

BOOL b=AllocConsole();//创建控制台
//一个进程只能创建一个console,多次调用会返回FALSE;而且,这个窗口是个独立的控制台窗口
//返回值:如果函数成功,则返回值为非零值.如果该函数失败,则返回值为零

HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);//获得控制台输出句柄


TCHAR ch[] = _T("我是中国人");
int len = lstrlen(ch);

BOOL b1 = WriteConsole(hStdout, ch, len, NULL, NULL);//在控制台输出


CloseHandle(hStdout); //释放输出句柄


TCHAR Buffer[100]; //开缓存
memset(Buffer, 0, 100);
DWORD dwCount = 0; //已输入数

HANDLE hdlRead = GetStdHandle(STD_INPUT_HANDLE); //获得控制台输入句柄
ReadConsole(hdlRead, Buffer, 100, &dwCount, NULL); //从控制台输入缓冲区读取字符输入,并将其从缓冲区中删除
//参数1:控制台输入缓冲区的句柄
//参数2:指向接收从控制台输入缓冲区读取数据的缓冲区的指针
//参数3:要读取的字符数。 lpBuffer 参数指向的缓冲区的大小应至少nNumberOfCharsToRead * sizeof(TCHAR)为字节
//参数4:要读取的字符数,第四个参数必须指定,否则会无法读取
//参数5:指向 CONSOLE_READCONSOLE_CONTROL 结构的指针,该结构指定要向读取操作末尾发出信号的控制字符。 此参数可以为 NULL
// 此参数默认需要 Unicode 输入。 对于 ANSI 模式,请将此参数设置为 NULL
//返回值:如果该函数成功,则返回值为非零值。 如果函数失败,则返回值为零

AfxMessageBox(Buffer);

CloseHandle(hdlRead); //释放输入句柄

//BOOL b=::FreeConsole();//关闭控制台
//执行这条指令时会中断,不知道什么原因,请知道的告诉我一下,请底部留言