在不同的Windows 10计算机上更改控制台屏幕缓冲区时的行为不一致

时间:2018-11-18 01:15:18

标签: c winapi console-application

因此,我一直在弄乱控制台屏幕缓冲区,并且注意到在不同的机器上编译和运行代码时,我的代码无法以相同的方式工作。
因此,当我在运行 Windows 10 Home 的笔记本电脑上使用Arrays.asList更改缓冲区时,可以获得屏幕更改的预期结果。当我使用SetConsoleActiveScreenBuffer输出某些内容时,它将输出到我更改为的新缓冲区中。但是,在运行 Windows 10 Enterprise N 2016 LTSB 的桌面上,当我更改缓冲区并使用printf输出某些内容时,它将输出到原始缓冲区而不是新设置的活动缓冲区。当我返回到旧缓冲区时,我会看到输出的文本。现在,由于我没有可用于atm的笔记本电脑,因此我设置了运行Windows 10 Pro的 VM ,安装了VS社区并编译了代码,并看到了与执行此操作时相同的结果在我的笔记本电脑上。

我的问题是:

  • 这两种行为中哪一种是正确的?
  • 我该如何解决这种矛盾?

我想要的效果是在将其设置为活动缓冲区之后,能够使用printf写入新缓冲区。

代码如下:

printf

我尝试了不同的SDK版本,但是它们似乎对这段代码的执行方式没有影响。 该项目使用Windows SDK版本:10.0.16299.0
VM Windows版本为10.0.17763内部版本17763
Windows桌面版本为10.0.14393 Build 14393

0 个答案:

没有答案