如何让CreateWindowEx()在特定的监视器上创建窗口?

dic*_*oce 4 winapi createwindowex monitors

我已经确定我可以使用GetSystemMetrics(SM_CMONITORS)来查询连接的监视器的数量,但是他们可以通过什么方式来控制CreateWindowEx()用于窗口的监视器?

Han*_*ant 7

是的,通过"x"和"y"参数.使用EnumDisplayMonitors(传递两个空值)枚举监视器.您的MonitorEnumProc回调获取监视器显示矩形的RECT*.如果显示器位于主显示器的左侧,则会得到负RECT.right.


Jer*_*fin 5

每个监视器只显示桌面的一部分,因此在特定监视器上显示窗口就是将窗口移动到该监视器显示的桌面部分。当您调用 CreateWindowEx(或 CreateWindow)时,您可以为窗口指定 x 和 y 坐标,因此在特定监视器上显示它只是意味着指定落在该监视器显示区域内的坐标。

您可以使用 GetMonitorInfo 在系统上找到监视器的工作区。