举报

c++双缓冲求解

0

找到了一个通过ReadConsoleOutputCharacter以及WriteConsoleOutputCharacter实现双缓冲的方式,但无法保存更多的字符信息(如颜色等)。

即使是这样,我依然不能够找到能够正常运作的代码或手动实现这样的功能。

这是我从网上找来的代码,还请村长帮忙纠错。

环境为win10 20h2 19042.928,MSVC以及g++编译出的代码均失效。

#include <stdio.h>
#include <Windows.h>
using namespace std;
int main() {
	HANDLE hOutput;
	COORD coord = { 0,0 };
	hOutput = GetStdHandle(STD_OUTPUT_HANDLE);

	HANDLE hOutBuf = CreateConsoleScreenBuffer(
		GENERIC_READ | GENERIC_WRITE,
		FILE_SHARE_READ | FILE_SHARE_WRITE,
		NULL,
		CONSOLE_TEXTMODE_BUFFER,
		NULL
	);

	SetConsoleActiveScreenBuffer(hOutBuf);

	CONSOLE_CURSOR_INFO cci;
	cci.bVisible = 0;
	cci.dwSize = 1;
	SetConsoleCursorInfo(hOutput, &cci);
	SetConsoleCursorInfo(hOutBuf, &cci);

	DWORD bytes = 0;
	char data[800];
	while (1){
		for (char c = 'a'; c < 'z'; c++){
			system("cls");
			for (int i = 0; i < 800; i++)printf("%c", c);
			ReadConsoleOutputCharacterA(hOutput, data, 800, coord, &bytes);
			WriteConsoleOutputCharacterA(hOutBuf, data, 800, coord, &bytes);
		}
	}
	return 0;
}
C++
ava
无名氏

2021-5-2

举报
0

输出 int 和输出字符串没什么区别吧?无非是转换为字符串而已,对于控制台来说,没区别。

我实在难以理解你的意思,你可以参考一下微软的控制台 API 看看有哪个是你需要的:https://docs.microsoft.com/en-us/windows/console/console-functions

ava
慢羊羊

2021-5-2

抱歉问题不清晰,已改,还请过目 -  无名氏  2021-5-2
举报
技术讨论社区
相关提问