2012-03-17 2 views
2

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

  • с моим ноутбуком (1280 х 800) на левый, как первичные и мониторе (1024 х 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) справа как первичный, формула была Left = - (Wi dth/2) - 10

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

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

ответ

2

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

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

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

+0

Это близко, но не совсем так, если в описании отсутствуют некоторые детали. Если это так, то значения Left и Width, которые задвигают окно на второй монитор (на RHS), должны давать (Ширина/2) + Левый = (первый пиксель монитора RHS), например. левый (первичный) монитор имеет ширину 1280, ширину = 400, левую = 1080, потому что пиксели нумеруются 0-1279, поэтому 1280 является первым), но они фактически дают значение ((первый пиксель монитора RHS) - 10) или 1270 в вышеуказанном случае. И аналогично (но не точно 10) для других первичных/вторичных позиций монитора. – SGarratt

Смежные вопросы