我正在使用SDL 1.2.14,我发现了一个需要能够选择哪个显示器获取全屏窗口的情况。使用Xorg,我发现Xinerama可以使用SDL_VIDEO_FULLSCREEN_HEAD环境变量完成这项工作,但是,我一直无法找到类似Win32的东西。
全屏窗口始终在主监视器上创建,并且由于SDL 1.2不能(SDL 1.3可以,但它不稳定)提供API来选择在Win32上使用哪个监视器,我想知道是否可以在创建完成后,使用Win32 API以编程方式将完全筛选的窗口移动到辅助监视器。
我能够获得窗口/上下文的基础Win32句柄。
答案 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。