Что определяет, когда окно развернется на дополнительный монитор? - PullRequest
2 голосов
/ 17 марта 2012

Я работал над использованием P / Invoke (пост, чтобы следовать) для поддержки нескольких мониторов с Silverlight 5. Во время игры я заметил, что размер и положение окна будут определять, на каком из моих двух мониторов будет развернуто дополнительное окно на,Я продолжил играть (как и вы) и определил, что:

  • с моим ноутбуком (1280 x 800) слева в качестве основного и монитором (1024 x 768) справа, формула была Left =- (Ширина / 2) + 1271
  • с моим монитором (1024 x 768) слева в качестве основного и ноутбуком (1280 x 800) справа, формула слева = - (Ширина / 2) +1014
  • с моим монитором (1024 x 768) слева и ноутбуком (1280 x 800) справа в качестве основного, формула была левой = - (Ширина / 2) - 11
  • с моим ноутбуком (1280 x 800) слева и монитором (1024 x 768) справа в качестве основного, формула была левой = - (Ширина / 2) - 10

Это выглядит такдолжен быть шаблон (константа = ширина экрана - 10 для основного слева, константа = -10 для основного справа), но это не точно.У меня нет других мониторов, доступных для проверки.Кто-нибудь знает, что это должно быть, или если это просто артефакт моего конкретного набора?

(Примечание: есть ограничения для них - они не работают для всех значений Left или Width)

1 Ответ

2 голосов
/ 22 марта 2012

Такое поведение, похоже, согласуется с поведением MonitorFromWindow . Из документации:

Функция MonitorFromWindow извлекает дескриптор монитора монитора, который имеет наибольшую площадь пересечения с ограничительным прямоугольником указанного окна.

Проверьте, соответствует ли это вашим расчетам. Должно быть.

...