Joseph, JP 和 CodingTheWheel 都提供了宝贵的帮助。
对于我的简单案例,最直接的方法似乎是基于CodingTheWheel 的回答:
// before entering update loop
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO bufferInfo;
GetConsoleScreenBufferInfo(h, &bufferInfo);
// update loop
while (updating)
{
// reset the cursor position to where it was each time
SetConsoleCursorPosition(h, bufferInfo.dwCursorPosition);
//...
// insert combinations of sprintf, printf, etc. here
//...
}
对于更复杂的问题,JP's answer提供的完整控制台 API与通过Joseph's answer的链接提供的示例相协调可能会很有用,但我发现对于这样一个简单的应用程序来说,使用这些工作太繁琐了。CHAR_INFO