我已经创建了矩阵式终端作为一个小项目。每次调整屏幕大小时,前一个缓冲区中的一些字符都会从终端窗口中泄漏出来,并漂浮在终端窗口之外,直到窗口被移动、调整大小或退出。
下面是该项目的GitHub存储库的链接,只有main.cpp是完整的代码,其余都是由Visual Studio创建的文件。
https://github.com/EliteGamerSiddhu/Matrix-terminal
每当我尝试截图时,问题就会消失。我觉得和windows背景刷新的方式有关系
我应该担心这个问题吗?或者这只是一个小项目可以忽略的东西?
我当然不会说你所看到的完全不寻常。当您调整控制台缓冲区大小时,根据当前屏幕上的确切内容,控制台必须将其中一些内容向上滚动到历史记录/回滚中。这样做是为了尝试防止在调整大小时丢失任何有用的信息。
但是,如果您正在制作“全屏”控制台应用程序,我是否可以建议您在应用程序启动开始时使用
\x1b[?1049h
转义序列来启用“备用屏幕缓冲区”?
这是
vim
、emacs
、tmux
等应用程序使用的模式,这样它们就可以完全绘制到整个控制台视口,然后在应用程序退出时整齐地清除整个内容。 (您需要使用 x\1b[?1049l
退出替代缓冲区)。
(您可能需要先启用
ENABLE_VIRTUAL_TERMINAL_PROCESSING
和 SetConsoleMode
)
更多阅读:备用屏幕缓冲区