【发布时间】:2022-01-02 01:15:44
【问题描述】:
我正在为 Windows 10 编写一个应用程序,用于在 Windows 控制台窗口的特定位置显示和更新文本。该程序由控制台窗口中的命令启动。启动时,它会擦除窗口以前的内容,然后显示其输出,并不断更新,直到完成。退出时,它应该保留显示的输出,并且下面应该出现一个新的命令提示符。启动、显示和后续命令提示符都发生在同一个控制台窗口中。 (老派,我知道,但这是要求。)该程序是用 C 编写的,并使用对 PDcurses 库的调用来控制光标位置并将显示文本输出到屏幕。该应用程序是在 Windows 10 平台上使用 GCC/MinGW 构建的。
在应用程序退出之前一切正常,但随后显示输出消失并且之前的窗口内容(从应用程序启动之前)重新出现。据我所知,这似乎是 curses 的默认行为,可能是由于它处理屏幕缓冲的方式。
我正在寻找覆盖此行为的方法,但我不确定如何处理它。我可以指示 PDcurses 写入标准屏幕缓冲区而不是备用屏幕缓冲区(如果这是怎么回事)?如果是这样,怎么做?我应该在调用 endwin() 之前复制屏幕缓冲区的内容,然后再将这些内容复制回屏幕缓冲区吗?再说一遍,怎么做?我确信这个问题已经解决了很多次,但我还没有找到任何似乎适用于在 Windows 控制台中运行的 C 可执行文件的解决方案,而且我对 PDcurses 和 Windows API 库的经验有限.任何帮助将不胜感激。
【问题讨论】:
标签: winapi console-application windows-console pdcurses