小编dis*_*fun的帖子

将 cout 重定向到使用 winapi 创建的新缓冲区

我正在尝试打印到我用 winapi 创建的新屏幕缓冲区,但它会转到旧缓冲区并且不会显示在屏幕上,是否可以重定向cout到使用 winapi 创建的新屏幕缓冲区?

#include <iostream>
#include <Windows.h>

int main() {
    HANDLE stdBuf, nBuf;
    DWORD numberOfChars;

    stdBuf = GetStdHandle(STD_OUTPUT_HANDLE);
    nBuf = CreateConsoleScreenBuffer(GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL);

    SetConsoleActiveScreenBuffer(nBuf);
    SetStdHandle(STD_OUTPUT_HANDLE, nBuf);

    // THIS SHOWING UP ON THE SCREEN
    WriteConsole(nBuf, "SECOND BUFFER", 13, &numberOfChars, NULL);

    // THIS IS GOING TO THE FIRST BUFFER
    std::cout << "SECOND BUFFER with cout" << std::endl;

    Sleep(3000);

    SetConsoleActiveScreenBuffer(stdBuf);
    CloseHandle(nBuf);

    int a = 0;
    std::cin >> a;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ console winapi

3
推荐指数
1
解决办法
1352
查看次数

标签 统计

c++ ×1

console ×1

winapi ×1