You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 11/10下Visual Studio控制台全屏兼容方案咨询

兼容Windows 10/11的控制台全屏实现方案

方法1:结合窗口消息与虚拟终端序列(推荐)

该方案可同时适配旧版控制台(Win10默认、Win11可选)和Windows Terminal(Win11默认):

#include <windows.h>
#include <iostream>

int main() {
    HWND consoleWnd = GetConsoleWindow();
    if (consoleWnd != NULL) {
        // 适配旧版控制台的最大化逻辑
        SendMessage(consoleWnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
        
        // 检测并适配Windows Terminal的全屏需求
        DWORD consoleMode;
        HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
        if (GetConsoleMode(hOut, &consoleMode)) {
            SetConsoleMode(hOut, consoleMode | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
            // 发送虚拟终端全屏序列
            std::cout << "\x1b[?1049h";
        }
    }

    std::cout << "全屏测试\n";
    system("pause");
    return 0;
}

方法2:直接设置窗口铺满工作区

通过获取屏幕工作区尺寸,强制控制台窗口铺满整个可用区域,双系统通用:

#include <windows.h>
#include <iostream>

int main() {
    HWND consoleWnd = GetConsoleWindow();
    if (consoleWnd != NULL) {
        RECT workArea;
        SystemParametersInfo(SPI_GETWORKAREA, 0, &workArea, 0);
        // 移动并拉伸窗口至工作区大小
        MoveWindow(consoleWnd, workArea.left, workArea.top, workArea.right - workArea.left, workArea.bottom - workArea.top, TRUE);
    }

    std::cout << "全屏测试\n";
    system("pause");
    return 0;
}

关键说明

  • Windows 11默认的Windows Terminal对WM_SYSCOMMAND, SC_MAXIMIZE的响应仅为窗口最大化(保留边框),虚拟终端序列\x1b[?1049h可触发其真正的全屏模式。
  • 旧版控制台对两种方案均能良好响应,方法2的兼容性最直接,无需区分控制台宿主类型。

内容的提问来源于stack exchange,提问作者whatupo9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 11:42:37