清除控制台时 C++ 闪烁

Posted

技术标签:

【中文标题】清除控制台时 C++ 闪烁【英文标题】:C++ Flickering When Clearing the Console 【发布时间】:2017-08-25 03:12:05 【问题描述】:

我正在尝试为使用 C++ 控制台制作的程序制作加载动画,我一直在使用 system("cls") 来清除控制台(我知道这是不好的做法),但主要问题是我运行程序时屏幕闪烁。我的代码如下所示:

有没有办法解决闪烁的问题?谢谢。

//loop
system("cls");
cout << "Loading..." << num << "%"; 

【问题讨论】:

我建议使用已经解决了这些问题的库,例如PDcurses,或Windows API console functions 你应该试试这个:support.microsoft.com/en-us/help/99261/… 【参考方案1】:

虽然您可以按照评论者的建议使用 curses 样式库,但您可能正在寻找 SetConsoleCursorPosition(2017 文档:https://docs.microsoft.com/en-us/windows/console/setconsolecursorposition)

BOOL WINAPI SetConsoleCursorPosition(
  _In_ HANDLE hConsoleOutput,
  _In_ COORD  dwCursorPosition
);

参数

hConsoleOutput [输入]

控制台屏幕缓冲区的句柄。句柄必须具有 GENERIC_READ 访问权限。有关详细信息,请参阅控制台缓冲区安全和访问权限。

dwCursorPosition [in]

以字符为单位指定新光标位置的 COORD 结构。坐标是屏幕缓冲区字符单元格的列和行。坐标必须在控制台屏幕缓冲区的边界内。

清屏/cls 不适用于动画。

【讨论】:

以上是关于清除控制台时 C++ 闪烁的主要内容,如果未能解决你的问题,请参考以下文章

从类方法中清除 raylib 中的背景会使窗口闪烁

单片机控制TFT液晶,液晶驱动为ILI9341,请教各位大神如何实现动画显示且屏幕不闪烁?

FlashWindowEx FLASHW_STOP 仍然使任务栏保持颜色

在另一个视图控制器中显示视图控制器时如何防止闪烁

如何清除控制台

如何清除控制台