首页 > 解决方案 > 我想在激活缓冲区后使用 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;


}

标签: c++console

解决方案


推荐阅读