双缓冲显示
演示代码
#include <Windows.h>
HANDLE G_hOutput, G_hOutBuf;
COORD G_coord = { 0,0 };
DWORD G_bytes = 0;
CHAR G_data[12] = "* * * * * *";
CHAR G_data_2[12] = " & & & & & ";
int main()
{
{
G_hOutBuf = CreateConsoleScreenBuffer(
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CONSOLE_TEXTMODE_BUFFER,
NULL
);
G_hOutput = CreateConsoleScreenBuffer(
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CONSOLE_TEXTMODE_BUFFER,
NULL
);
CONSOLE_CURSOR_INFO cci;
cci.bVisible = 0;
cci.dwSize = 1;
SetConsoleCursorInfo(G_hOutput, &cci);
SetConsoleCursorInfo(G_hOutBuf, &cci);
}
WriteConsoleOutputCharacterA(G_hOutput, G_data, 11, G_coord, &G_bytes);
WriteConsoleOutputCharacterA(G_hOutBuf, G_data_2, 11, G_coord, &G_bytes);
bool flag = true;
while(true) {
if(flag)
SetConsoleActiveScreenBuffer(G_hOutput);
else
SetConsoleActiveScreenBuffer(G_hOutBuf);
flag = !flag;
Sleep(50);
}
return 0;
}