Windows может отображать несколько мониторов в виртуальные рабочие столы, позволяя нам использовать это для разработки простых в работе приложений. Например, PowerPoint полностью использует преимущества двойных мониторов (большинство ноутбуков поддерживают его). Полем Так как же мы можем разработать такое приложение? Эта статья покажет вам, если вы реализуете приложения с использованием нескольких мониторов с использованием Delphi.
Windows также поддерживает клонирование методов отображения, и каждый монитор выводит тот же контент, что имеет смысл для некоторых приложений. Хотя некоторые графические карты также поддерживают два монитора, они не представляют собой не многочисленные, а виртуальные режимы отображения высокого разрешения (такие как 2048 × 768 или 1024 × 1536), которые отображают экран на два монитора через видеокарту. Ни один из этих двух режимов отображения не является Zhongdian, представленным в этой статье, и они также очень просты, поэтому мы больше не будем их повторять.
Windows поддерживает до 10 мониторов, а Windows отображает все мониторы в большой виртуальный рабочий стол. Дисплей может быть понят как частичный вид рабочего стола. Эти дисплеи могут быть произвольно расположены в свойствах дисплея в соответствии с физическим местоположением дисплея. Если монитор расположен нерегулярно, некоторые части виртуального рабочего стола не могут отображаться ни на одном мониторе. Чтобы не сделать форму между двумя мониторами, Windows использует дисплей в качестве основного монитора. Когда компьютер запускается, диалоговое окно для входа в систему отображается в основном мониторе. Большинство дисплеев стартапов программы будут отображаться в основном мониторе.
Согласно вышеупомянутому введению, нетрудно найти несколько важных концепций: настольный компьютер, монитор, основной монитор и т. Д. Во -первых, мы должны сначала выяснить эти концепции и их предыдущие отношения. Это ключ к овладению методом разработки многопользовательского приложения. Как только вы поймете эти концепции, другие части будут очень легко понять.
Настольный компьютер на самом деле относится к логической области, которую могут отображать Windows. На самом деле, форма может отображаться за пределами рабочего стола. Тем не менее, это не означает, что все части рабочего стола будут отображаться на определенном мониторе (причина, как упоминалось ранее);
Настольный компьютер - это прямоугольная область, которая описывает размер рабочего стола по координатам вершины (вверху, слева) и шириной и высотой. Зачем вам все еще нужны координаты вершины? Потому что координаты вершины не воспринимаются как должное (0,0). Так где (0,0)? Это длинная история, так что давайте впервые рассмотрим концепцию, упомянутую только сейчас - основной монитор. Windows хочет, чтобы общая программа была отображена на основном мониторе в начале, потому что люди привыкли обращать внимание на ближайший к ним монитор. Windows не может заставить пользователей использовать самый левый монитор в качестве основного монитора, поэтому приложения должны беспокоиться о расчетах, чтобы отобразить себя на основном мониторе. Тем не менее, у большинства пользователей есть только один монитор (два монитора занимают слишком много места), и обычные приложения не хотят тратить много усилий, чтобы рассчитать, где находится основной монитор и где их следует отображать. Таким образом, Windows предлагает разумное решение: используйте координаты вершины основного дисплея в качестве источника системы координат. Таким образом, обычные программы должны учитывать проблемы в одной среде монитора.
Монитор - это частичный вид на рабочем столе. Это как смотреть на пейзаж за окном через окно, стоя перед разными окнами, вы можете увидеть разные картинки. Аналогичным образом, дисплей также представляет собой прямоугольную область, и его размеры также могут быть описаны координатами вершины (вверху, слева), шириной и высотой. Координаты вершины относительно происхождения системы координат настольных компьютеров, то есть к вершинам основного дисплея.
Концепция рабочей области относительно проста.
Windows предоставляет набор API для разработки многопользовательских приложений. VCL инкапсулирует эти API и очень естественно интегрирует их во всю структуру, что делает его очень простым в разработке многопользовательских приложений. Ниже приводится связанный контент.
Наиболее знакомым VCL, вероятно, является Tcustomform, который является базовым классом всех форм. Свойство положения Tcustomform используется для установки фактической позиции формы. Основной дисплей; Если это свойство установлено на Podesktopcenter, а программа работает на системе с несколькими мониторами, то это окно будет отображаться между двумя мониторами, что вызывает ненужные проблемы для пользователя. Следовательно, даже если наша программа не предназначена для многоотдачи, это значение следует обрабатывать тщательно. Другое свойство - DefaultMonitor, который имеет аналогичную функцию по позиции, которая определяет, какое мониторинг окна отображается изначально. Он имеет четыре альтернативных значения: dmdesktop, dmprimary, dmmainform и dmactiveform. Их значения следующие:
Ценить | Значение |
dmdesktop | Нет особого лечения |
Dmprimary | Отобразить форму на первом мониторе. Это еще одна ловушка, буквально основной монитор, и на самом деле она относится к монитору Monitor [0]. |
dmmainform | Отобразить форму на монитор, где находится основная форма |
DmactiveForm | Покажите форму для монитора, где активная форма находится на рабочем столе |
Tcustomform также имеет монитор общего свойства только для чтения (без опубликованного), который предоставляет ссылку на доступ к экземпляру дисплея, где находится форма.
Так как же перемещать форму между различными дисплеями? Это не сложно, вероятно, вы тоже об этом думали. Вот два метода:
Во -первых, вы можете установить верхнюю и слева от Tcustomform для отображения формы в любом месте на рабочем столе. Как упоминалось ранее, рабочий стол состоит из всех мониторов. Они имеют общую систему координат, поэтому положение формы может быть определена на основе логического положения дисплея. Теперь вопрос в том, как получить логическое положение и размер каждого монитора, который будет введен позже.
Во -вторых, вы можете вызвать сборный метод Tcustomform, чтобы полностью отобразить форму на указанный дисплей. Этот метод может быть использован для предотвращения отображения окна части каждого из двух мониторов.
Мы только что задали вопрос: как получить логическое положение и размер каждого монитора. Чтобы ответить на этот вопрос, нам нужно представить другую категорию: TSCREEN и TMONITOR.
Tscreen описывает некоторую информацию, связанную с отображением устройств, и мы в основном связаны с информацией, связанной с логическим положением и размером дисплея. Другие аспекты можно найти в документации Delphi. Когда программа работает, VCL автоматически создает экземпляр TSCREEN - глобальной переменной, поэтому обычно программе не нужно создавать экземпляры TSCREEN.
TSCREEN имеет набор свойств в форме настольного компьютера*, которые описывают размер всего рабочего стола и координаты каждой вершины. Существует также ряд свойств, которые имеют большое значение для разработки мульти-мониторов: Monitorcount и мониторы. Благодаря этим двум свойствам мы можем перечислять все экземпляры мониторов (Tmonitors) в системе.
Среди многих свойств TSCREEN мы найдем два свойства: высота и ширина. Будьте особенно осторожны, не имея в виду размер всего рабочего стола, а к высоте и ширине основного дисплея. Это очень легко заставить людей чувствовать себя иллюзии, что они не могут думать о размере всего рабочего стола. Аналогичным образом, существует набор свойств в форме, как Workarea*, которые описывают размер рабочей области основного дисплея и координаты каждой вершины. Как вы думаете, чего -то не хватает? Почему свойства относительного положения основного монитора не получают? Причина, как упоминалось ранее: Windows использует верхний левый угол основного монитора в качестве источника системы координат, поэтому относительное положение основного монитора должно быть (0, 0).
В дополнение к этим свойствам, мы также представим три функции членов TSCREEN: Monitorfoint, Monitor -FromRect и MonitorFromWindow. Как следует из названия, они являются экземплярами дисплея, где расположены координата, определенная область и определенное окно. Это также может использоваться в реальной разработке.
Лучше всего, давайте посмотрим на класс Tmonitor. Он инкапсулирует соответствующие свойства физического дисплея-все только для чтения. В следующей таблице кратко описывается значение этих свойств, которые очень полезны для написания многопользовательских приложений:
свойство | иллюстрировать |
Ручка | Получите ручку Windows этого монитора |
Мониторум | Получить номер монитора |
Начальный | Получает, является ли монитор основным монитором. И основной с одним монитором верно. |
Вершина | Получить верхнюю границу монитора |
Левый | Получить левую границу монитора |
Высота | Получить высоту монитора |
Ширина | Получить ширину монитора |
Boundsrect | Получите соответствующую площадь рабочего стола монитора, которая эквивалентна вышеуказанным четырем свойствам |
Рабочий сбор | Получите область, соответствующую рабочему столу рабочего пространства монитора. |
После четкого понимания TSCREEN и TMONITOR предыдущие проблемы будут естественно решены. К этому моменту эта статья охватывала все знания, необходимые для разработки многопользовательских приложений. Я считаю, что вы можете использовать эти знания для разработки очень практических программных продуктов.
Приложение: Вы можете скачать демо, чтобы помочь понять эту статью.