c++ - 如何在 Windows 中的特定显示器上打开一个窗口?

标签 c++ windows graphics

我的任务是修改我们的一个 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/

相关文章:

python - 使用 Python 查找 CPU L3 缓存大小

python - 在 Python 中,如何检查驱动器是否存在而不对可移动驱动器抛出错误?

c# - 用鼠标绘图会导致像素之间出现间隙

c++ - 为什么 DirectX 全屏应用程序会出现黑色屏幕截图?

c++ - 为具有 1 和 2 字节字符的字符集实现退格

c++ - Visual Studio 2012 - 两个项目 -> 链接器错误 (C++)

德尔福/GDI+ : When is a Device Context created/destroyed?

c++ - `co_yield` 能否在协程恢复时从调用方返回一个值?

c++ - 通过快捷方式启动程序时 WM_SETICON 不起作用

java - 有时会自动调用 repaint() 吗?