使用Win32 / SDL将全屏窗口移动到辅助监视器

时间:2011-09-04 15:47:11

标签: winapi sdl multiple-monitors

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

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

我能够获得窗口/上下文的基础Win32句柄。

1 个答案:

答案 0 :(得分:3)

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

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

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

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

完整的API详见MSDN