我試圖打印到我用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;
}
是的,這是可能的。 –