我正在尝试使用它获取多个监视器的屏幕截图IDirect3DDevice9::GetFrontBufferData()
并且它可以工作,但我无法弄清楚我如何识别哪个IDirect3DDevice9
对应于哪个监视器以及它的输出如何定位在 Windows“虚拟屏幕”上。
我尝试过IDirect3DDevice9::GetViewport()
,但它总是获得左上坐标设置为“0,0”(以及适当的宽度和高度)的视口坐标,因此它不能用于识别哪个显示器是左边的,哪个是右边的。
到目前为止,我发现当我调用时,EnumDisplayMonitors()
监视器会按顺序枚举,因为我调用时会枚举设备,IDirect3D9::GetAdapterDisplayMode()
并且可以使用它。但是,我没有看到文档说明这两个函数是否保证任何枚举顺序。
我可以依赖EnumDisplayMonitors()
并IDirect3D9::GetAdapterDisplayMode()
拥有相同的枚举顺序吗?有没有更好的办法?