调整大小后终端字符泄漏

问题描述 投票:0回答:1

我已经创建了矩阵式终端作为一个小项目。每次调整屏幕大小时,前一个缓冲区中的一些字符都会从终端窗口中泄漏出来,并漂浮在终端窗口之外,直到窗口被移动、调整大小或退出。

下面是该项目的GitHub存储库的链接,只有main.cpp是完整的代码,其余都是由Visual Studio创建的文件。

https://github.com/EliteGamerSiddhu/Matrix-terminal

每当我尝试截图时,问题就会消失。我觉得和windows背景刷新的方式有关系

我应该担心这个问题吗?或者这只是一个小项目可以忽略的东西?

window console-application windows-terminal
1个回答
0
投票

我当然不会说你所看到的完全不寻常。当您调整控制台缓冲区大小时,根据当前屏幕上的确切内容,控制台必须将其中一些内容向上滚动到历史记录/回滚中。这样做是为了尝试防止在调整大小时丢失任何有用的信息。

但是,如果您正在制作“全屏”控制台应用程序,我是否可以建议您在应用程序启动开始时使用

\x1b[?1049h
转义序列来启用“备用屏幕缓冲区”?

这是

vim
emacs
tmux
等应用程序使用的模式,这样它们就可以完全绘制到整个控制台视口,然后在应用程序退出时整齐地清除整个内容。 (您需要使用
x\1b[?1049l
退出替代缓冲区)。

(您可能需要先启用

ENABLE_VIRTUAL_TERMINAL_PROCESSING
SetConsoleMode

更多阅读:备用屏幕缓冲区

© www.soinside.com 2019 - 2024. All rights reserved.