如何可靠地识别 Direct3D9“设备”何时映射到哪个 Windows GDI“监视器”?

问题描述

我正在尝试使用 IDirect3DDevice9::GetFrontBufferData() 获取多个显示器的屏幕截图并且它可以工作,但我无法弄清楚如何识别哪个 IDirect3DDevice9 对应于哪个显示器以及它的输出如何在 Windows 上定位“虚拟屏幕”。

我尝试了 IDirect3DDevice9::GetViewport() 但它总是获得左上坐标设置为“0,0”(以及适当的宽度和高度)的视口坐标,因此它不能用于识别哪个显示器在左边,哪个在右边.

到目前为止,我发现当我调用 EnumdisplayMonitors() 时,监视器会按顺序枚举,因为当我调用 IDirect3D9::GetAdapterdisplayMode() 时会枚举设备,这可以使用。但是,我没有看到文档说明是否可以保证这两个函数的枚举顺序。

我可以依赖具有相同枚举顺序的 EnumdisplayMonitors()IDirect3D9::GetAdapterdisplayMode() 吗?有没有更好的办法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)