我试图打印到我用winapi创建的新屏幕缓冲区,但是它将转到旧缓冲区并且不显示在屏幕上,是可能,将cout
重定向到使用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;
}
是的,这是可能的。 –