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
相关产品推荐
相关产品推荐

