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

VS2017中C++控制台程序如何实现自动全屏?

解决控制台窗口全屏问题

你原来的代码问题出在MoveWindow的调用时机或系统对窗口样式的限制上,改用更可靠的SetWindowPos并直接获取屏幕尺寸就能解决。以下是两种实用的实现方案:

方案一:兼容多系统的窗口全屏(推荐)

这个方法能让控制台窗口覆盖整个屏幕,兼容Windows 7及以上系统:

#include <Windows.h>

int main()
{
    HWND console = GetConsoleWindow();
    // 获取当前屏幕的分辨率
    int screenWidth = GetSystemMetrics(SM_CXSCREEN);
    int screenHeight = GetSystemMetrics(SM_CYSCREEN);

    // 直接设置窗口位置和大小,确保左上角对齐屏幕原点
    SetWindowPos(console, NULL, 0, 0, screenWidth, screenHeight, SWP_NOZORDER);

    // 可选:如果想要无框全屏(去掉标题栏和边框),取消下面的注释
    // LONG windowStyle = GetWindowLong(console, GWL_STYLE);
    // // 移除标题栏、边框、最小化/最大化按钮
    // windowStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX);
    // SetWindowLong(console, GWL_STYLE, windowStyle);
    // // 刷新窗口样式
    // SetWindowPos(console, NULL, 0, 0, screenWidth, screenHeight, SWP_NOZORDER | SWP_FRAMECHANGED);

    // 这里写你的游戏逻辑
    return 0;
}

方案二:Win10+原生控制台全屏

如果目标系统是Windows 10 1607及以上版本,可以用系统原生接口实现和Alt+Enter一致的控制台全屏效果:

#include <Windows.h>
#include <conio.h>

int main()
{
    HANDLE consoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
    // 切换到全屏模式
    SetConsoleDisplayMode(consoleOut, CONSOLE_FULLSCREEN_MODE, NULL);

    // 示例:按任意键退出全屏
    _getch();

    // 恢复窗口模式
    SetConsoleDisplayMode(consoleOut, CONSOLE_WINDOWED_MODE, NULL);

    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:30:07