【问题标题】:Is it possible to create a Windows Terminal bigger than the Screen? C++是否可以创建比屏幕更大的 Windows 终端? C++
【发布时间】:2021-10-25 10:25:40
【问题描述】:

我正在测试一些东西,我想创建一个尺寸比当前屏幕更大的 Windows 终端。我知道这听起来很愚蠢,但这是我正在努力实现的目标。

我尝试了不同的方法,例如:

HWND console = GetConsoleWindow();
RECT r;
GetWindowRect(console, &r);
MoveWindow(console, r.left, r.top, 100, 3000, TRUE);

还有:

DWORD CurrentMode;
GetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), &CurrentMode);
SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), CurrentMode | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
fputs("\x1b[8;30;800t", stdout);

我在不同的帖子中找到了这两种方法。这两种方法都会更改终端尺寸,但该尺寸不能大于屏幕。 我还意识到您不能(或者至少,我不能)手动调整 Windows 终端的大小,使其具有比屏幕更大的尺寸。

这似乎是一项不可能完成的任务,但也许有人知道如何去做。感谢您的帮助。

【问题讨论】:

  • 您有启用 NView 的 Nvidia 驱动程序吗?它可能会将您的 Win32 消息挂钩以将窗口大小剪辑到桌面坐标...
  • @Luca 我已经找到了,似乎我正在使用它来管理多个屏幕。我应该禁用它吗?它实际上会让我能够调整终端的大小?
  • @user1810087 我看过那篇文章,但似乎不再适用于 Windows 10。我会继续尝试。
  • @MarcosRoudri 我会试一试。我记得它有一个选项可以避免桌面区域之外的窗口。

标签: c++ windows terminal windows-terminal


【解决方案1】:

GetConsoleWindow 特别不适用于 Windows 终端,就像它用于老式控制台 conhost.exe 一样。在 Windows 终端中调用时,它会返回一个虚拟的 HWND,而不是终端窗口的实际 HWND。 FWIW,一般是not recommended to use that API前进。

即使使用\x1b[8;;t 序列来调整控制台的大小,控制台也有非常明确的代码来防止其自身的大小被调整到大于它当前所在的监视器的大小。见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    相关资源
    最近更新 更多