我見過一些控制檯遊戲,屏幕刷新/清除本身沒有惱人的閃爍。我已經嘗試了很多解決方案,下面是我現在得到的內容:Win32 C++控制檯清除屏幕不閃爍
while(true)
{
if(screenChanged) //if something needs to be drawn on new position
{
COORD coordScreen = { 0, 0 };
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi;
DWORD dwConSize;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsole, &csbi);
dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, coordScreen, &cCharsWritten);
GetConsoleScreenBufferInfo(hConsole, &csbi);
FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten);
SetConsoleCursorPosition(hConsole, coordScreen);
}
///printf all the time graphics on their right position with SetConsoleCursorPosition
Sleep(33.3f);
}
不過,我還是有一些微小的閃爍。有人有主意嗎?
它有可能這些遊戲不是作爲Windows控制檯應用程序編寫的,而是作爲DOS應用程序使用各種圖形模式並將像素直接寫入圖形內存。 – 2013-04-21 12:42:52
@Captain重新讀第一句。源代碼不適用於他所看到的「控制檯遊戲」,源代碼就是他所嘗試的。 – 2013-04-22 00:33:28
@CodyGray哎呀;) – 2013-04-22 00:39:01