我的任务是修改我们的一个 c++ 产品,以便在 Windows 操作系统的特定显示器上生成一个新窗口。这适用于需要能够配置平铺多显示器可视化的客户,其中每台显示器都由一台计算机上的独立显卡驱动。
在 Linux 中,我可以通过在每个显示器上启动 X 服务器,然后启动可视化软件的多个实例并适当设置 DISPLAY env var 来轻松做到这一点。但是,在 Windows 中执行此操作时我迷路了。有任何指示/建议/示例吗?
最佳答案
您需要枚举所有监视器并检查它们在 virtual screen (MSDN) 上的映射.
通过调用 EnumDisplayMonitors (MSDN) 来枚举监视器.这将枚举一系列 HMONITOR
句柄,您可以将其传递给 GetMonitorInfo (MSDN)获取监视器在虚拟屏幕上的位置。
还有一个完整的多显示器支持指南也值得一读。
About Multiple Display Monitors (Windows) @ MSDN
一些注意事项:因为虚拟屏幕是用户控制的映射,所以没有什么可以阻止用户在虚拟坐标空间中放置显示器的物理侧的相反物理侧设置显示器,反之亦然,以及许多其他奇怪的放置场景。此外,某些显示卡会在检测到插件时尝试假定显示器的位置,从您的软件角度来看这可能是错误的,但可能是由于用户没有注意哪个显示端口映射到左侧(如果它甚至被标记的话)。
关于c++ - 如何在 Windows 中的特定显示器上打开一个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14466735/