【问题标题】:Move fullscreen window to secondary monitor with Win32/SDL使用 Win32/SDL 将全屏窗口移动到辅助监视器
【发布时间】:2011-09-15 18:46:41
【问题描述】:

我正在使用 SDL 1.2.14,并且我发现我需要能够选择哪个显示器获得全屏窗口。使用 Xorg,我发现 Xinerama 可以使用 SDL_VIDEO_FULLSCREEN_HEAD 环境变量完成这项工作,但是,我一直无法为 Win32 找到类似的东西。

全屏窗口总是在主监视器上创建,由于 SDL 1.2 没有(SDL 1.3 可以,但它不稳定)提供 API 来选择在 Win32 上使用哪个监视器,我想知道是否可以创建后,使用 Win32 API 以编程方式将全屏窗口移动到辅助监视器。

我能够获取窗口/上下文的底层 Win32 句柄。

【问题讨论】:

    标签: winapi sdl multiple-monitors


    【解决方案1】:

    Raymond Chen 写了一篇关于如何switch an application between windowed and full screen 的有用文章。对您来说重要的部分是这部分代码:

    GetMonitorInfo(MonitorFromWindow(hwnd, MONITOR_DEFAULTTOPRIMARY), &mi))
    

    这会获取特定监视器的监视器信息,但使用从MonitorFromWindow 返回的值来选择窗口当前所在的监视器。还有其他几种选择监视器的方法,例如提供 X、Y 坐标或枚举它们(使用 EnumDisplayMonitors(...))。

    GetMonitorInfo(...) 传回一个 MONITORINFO,其中包含显示的相对位置和大小,您可以使用它们来定位全屏窗口。

    完整的 API 详见MSDN

    【讨论】:

    • 我知道您想将已经全屏的窗口移动到另一台显示器,但您应该能够从我提供的信息中得出如何做到这一点。
    猜你喜欢
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    相关资源
    最近更新 更多