Поделиться через


Несколько приложений мониторинга в разных системах

Чтобы приложение monitoraware работало как в системах, так и без поддержки нескольких мониторов, свяжите приложение с Multimon.h. Кроме того, необходимо определить COMPILE_MULTIMON_STUBS в одном файле C. Если система не поддерживает несколько мониторов, это возвращает значения по умолчанию из GetSystemMetrics , а несколько функций монитора действуют так, как если бы отображалось только одно отображение. В нескольких системах мониторинга приложение будет работать нормально.

Так как отрицательные координаты могут происходить легко в многомониторной системе, необходимо получить координаты, упакованные в lParam, с помощью макросов GET_X_LPARAM и GET_Y_LPARAM .

Не используйте отрицательные координаты или координаты, превышающие SM_CXSCREEN, и SM_CYSCREEN для скрытия окна. Windows, которые используют эти ограничения для скрытия, могут отображаться на другом мониторе. Аналогичным образом не используйте эти ограничения для отображения окна, так как это может привести к привязке окна к основному монитору. Рекомендуется повторно искать существующие приложения для этих проблем. Однако можно свести к минимуму проблемы в существующих приложениях, запустив приложение на основном мониторе или сохранив основной монитор в левом верхнем углу виртуального экрана.

Обратите внимание, что для рабочего стола определены SM_CXMAXTRACK и SM_CYMAXTRACK, а не только один монитор. Windows использование этих ограничений может потребоваться переопределять.

Родительское или связанное окно может не находиться на том же мониторе, что и дочернее окно. Чтобы найти монитор окна, приложения должны использовать функцию MonitorFromWindow .

Чтобы отобразить заставку экрана на всех мониторах, свяжите ее с последней версией Scrnsave.lib. В противном случае заставка экрана может отображаться только на основном мониторе и оставить другие мониторы нетронутыми. Средства сохранения экрана, связанные с последней версией Scrnsave.lib, будут работать как в одной, так и в нескольких системах мониторинга. Чтобы иметь разные экранные заставки на каждом мониторе, используйте несколько функций монитора для обработки каждого монитора отдельно.

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

Чтобы сопоставить входные данные мыши, отправляемые в абсолютных координатах на весь виртуальный экран, используйте структуру INPUT с MOUSEEVENTF_ABSOLUTE и MOUSEEVENTF_VIRTUALDESKTOP.

Функция BitBlt хорошо работает для нескольких систем мониторинга. Однако функции MaskBlt, PlgBlt, StretchBlt и TransparentBlt завершаются ошибкой, если контексты исходного и целевого устройств отличаются.