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

如何在启动时让C++ wxWidget应用窗口自动适配全屏?

在wxWidgets中实现应用启动时全屏适配屏幕的方法

方法1:调用Maximize()实现系统级最大化

这是最贴合系统默认最大化行为的方式,会让窗口铺满整个屏幕的可用区域(保留任务栏/ dock)。直接在窗口初始化时调用即可:

bool MyApp::OnInit()
{
    MyFrame* frame = new MyFrame("My App", wxPoint(50, 50), wxSize(800, 600));
    frame->Maximize(true); // 启动时自动最大化
    frame->Show(true);
    return true;
}

方法2:使用ShowFullScreen()实现真正全屏(隐藏系统元素)

如果需要完全覆盖整个屏幕(包括任务栏、系统托盘),可以用这个方法,通过参数控制全屏模式:

bool MyApp::OnInit()
{
    MyFrame* frame = new MyFrame("My App", wxPoint(50, 50), wxSize(800, 600));
    // wxFS_EX_FULLSCREEN 参数会隐藏任务栏等系统元素
    frame->ShowFullScreen(true, wxFS_EX_FULLSCREEN);
    frame->Show(true);
    return true;
}

还可以组合wxFS_EX_NO_BORDER参数移除窗口边框,按需调整即可。

方法3:手动获取屏幕尺寸设置窗口

如果需要自定义控制窗口大小,可通过wxDisplay类获取屏幕分辨率,再设置窗口尺寸:

#include <wx/display.h>

bool MyApp::OnInit()
{
    wxDisplay display;
    // 获取屏幕工作区(不含任务栏)
    wxRect screenWorkArea = display.GetClientArea();
    // 若要获取整个屏幕物理尺寸(含任务栏),改用 GetGeometry()
    // wxRect screenFullArea = display.GetGeometry();

    MyFrame* frame = new MyFrame("My App", wxDefaultPosition, screenWorkArea.GetSize());
    frame->Show(true);
    return true;
}

多显示器场景下,可通过wxDisplay::GetCount()获取显示器数量,用wxDisplay(n)指定对应屏幕(n从0开始)。

补充说明

GetClientSize()操作的是窗口的客户区(不含标题栏、边框),如果用它实现全屏,需要额外计算窗口框架的尺寸,远不如上面的方法便捷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 13:04:53