Мониторы позиции на Windows обои

Я работаю над приложением C ++ для управления обоями на нескольких мониторах в Windows, как это делают UltraMon и DisplayFusion, но с большим количеством опций.

Все работает хорошо, но контролирует размещение.

Мой рабочий стол имеет три монитора, расположенных так (игнорируйте № 4)
введите описание изображения здесь

Но когда я смотрю на файл обоев, созданный UltraMon, третий монитор (маленький) не имеет такой же позиции:
введите описание изображения здесь

Используя функции EnumDisplayMonitors и GetMonitorInfo, я получаю следующие данные:

0: 1920x1080 at 1920x0
1: 1920x1080 at 0x0 primary
2: 800x480 at -800x-480

Что соответствует моей договоренности, но отличается от файла обоев.

Как узнать, где размещено изображение в глобальном файле обоев, чтобы оно отображалось на правом мониторе? Я думаю, что автор UltraMon нашел правильный путь, потому что он работает отлично.

(Я задавал этот вопрос на форуме UltraMon тоже).

0

Решение

Благодаря статье, цитируемой Раймоном Ченом, я понял это.
http://blogs.msdn.com/b/oldnewthing/archive/2007/09/24/5083738.aspx

Две вещи, которые нужно знать:

  1. хитрость в том, чтобы иметь разные обои на каждом мониторе, это создать «макро обои» и сделать их мозаичными по всему рабочему столу.
  2. плитка начинается с 0; 0 на основном мониторе

Зная это, любой монитор, который находится слева или сверху от основного монитора, находится на другой плитке обоев.

Давайте посмотрим на это на картинке:
введите описание изображения здесь

в зеленом у нас есть рабочий стол, который использует четыре плитки изображения обоев (в красном).

Теперь пришло время кодировать это!

2

Другие решения


По вопросам рекламы [email protected]