Как вы получаете CreateWindowEx () для создания окна на конкретном мониторе? - PullRequest
4 голосов
/ 02 декабря 2009

Я определил, что могу использовать GetSystemMetrics (SM_CMONITORS) для запроса количества подключенных мониторов, но есть ли способ контролировать, какой монитор CreateWindowEx () использует для окна?

Ответы [ 3 ]

7 голосов
/ 02 декабря 2009

Да, по аргументам "x" и "y". Используйте EnumDisplayMonitors (передать два нуля), чтобы перечислить мониторы. Ваш обратный вызов MonitorEnumProc получает RECT * к прямоугольнику дисплея монитора. Вы получите отрицательное RECT.right, если монитор расположен слева от вашего основного.

4 голосов
/ 02 декабря 2009

Каждый монитор просто отображает некоторую часть рабочего стола, поэтому показ окна на конкретном мониторе заключается в перемещении окна к части рабочего стола, отображаемой этим монитором. Когда вы вызываете CreateWindowEx (или CreateWindow), вы можете указать координаты x и y для окна, поэтому отображение его на конкретном мониторе просто означает указание координат, которые попадают в область, отображаемую этим монитором.

Вы можете найти рабочие области для мониторов в системе с GetMonitorInfo.

0 голосов
/ 20 февраля 2017

Параметры x и y указывают местоположение нового окна. Эта точка может находиться где угодно на виртуальном экране (все прямоугольники монитора вместе взятые).

Если вы хотите создать окно на том же мониторе, что и другое окно, вы можете позвонить MonitorFromWindow. В противном случае можно перечислить все мониторы с помощью EnumDisplayMonitors.

В любом случае, если у вас есть дескриптор HMONITOR, вы должны затем вызвать GetMonitorInfo. Ваши параметры x и y должны быть значением внутри границ элемента rcWork в информационной структуре монитора. Обычно вы выбираете значения, которые помещают ваше окно в центр этого прямоугольника.

Важно использовать прямоугольник рабочей области, а не весь прямоугольник монитора, потому что вы не хотите, чтобы ваше окно отображалось под панелью задач и другими постоянно расположенными сверху панелями приложений.

...