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

Mai*_*ter 6 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句柄.

ica*_*bod 3

Raymond Chen 写了一篇关于如何在窗口和全屏之间切换应用程序的有用文章。对您来说重要的部分是代码的这一部分:

GetMonitorInfo(MonitorFromWindow(hwnd, MONITOR_DEFAULTTOPRIMARY), &mi))
Run Code Online (Sandbox Code Playgroud)

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

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

MSDN上详细介绍了完整的 API 。