c++ - 我想在激活缓冲区后使用 cin 或 cout 。我应该怎么办
问题描述
我正在尝试使用双重奖励
,但我还没有成功,
请忽略它
激活第一个缓冲区后可以输入吗?
如果在激活第一个缓冲区 (0xc0000142) 后得到输入,我会收到错误,
我想在调用 SetConsoleActiveScreenBuffer 函数后使用 cout 或 cin。我该怎么做呢?
#include <iostream>
using namespace std;
int main()
{
HANDLE mhBuffer[2];
int mCurrentBufferIndex = 0;
COORD mSize;
mSize.X = 120;
mSize.Y = 30;
CONSOLE_CURSOR_INFO cci;
SMALL_RECT rect;
rect.Left = 0;
rect.Right = mSize.X - 1;
rect.Top = 0;
rect.Bottom = mSize.Y - 1;
//CreateBuffer
mhBuffer[0] = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
SetConsoleScreenBufferSize(mhBuffer[0], mSize);
SetConsoleWindowInfo(mhBuffer[0], TRUE, &rect);
mhBuffer[1] = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
SetConsoleScreenBufferSize(mhBuffer[1], mSize);
SetConsoleWindowInfo(mhBuffer[1], TRUE, &rect);
cci.dwSize = 1;
cci.bVisible = FALSE;
SetConsoleCursorInfo(mhBuffer[0], &cci);
SetConsoleCursorInfo(mhBuffer[1], &cci);
//Write to Buffer
DWORD dw;
COORD CursorPosition = { 0,0 };
SetConsoleCursorPosition(mhBuffer[mCurrentBufferIndex], CursorPosition);
char str[] = "buffer";
WriteFile(mhBuffer[mCurrentBufferIndex], str, strlen(str), &dw, NULL);
Sleep(33);
SetConsoleActiveScreenBuffer(mhBuffer[mCurrentBufferIndex]);
int b = 0;
cin >> b;
}
解决方案
推荐阅读
- json - 用于在网站上共享办公室详细信息的基于标准的文件格式
- typo3 - tx-news 忽略 gridelement 中的所有 flexform 设置
- php - 类型:错误消息:不在对象上下文中使用 $this
- javascript - 不仅可以看到场景 BG 的折射效果,还可以看到 3D 模型的折射效果
- android - Inkscape SVG 到 Android 矢量
- angular - 如果我将数据发送到 NativeScript 中的服务器,有没有办法刷新视图?
- c++ - codecvt_utf8_utf16 可以和 wfstream 一起使用吗?
- neo4j - 如何在 neo4j 的 FOREACH 子句中定义变量,如何查找两个节点的公共属性数
- laravel - Laravel 5 上的表单验证
- c - 带条件格式的 Printf