Да.
Pplu задается вопросом, почему программы работают медленнее, когда система работает с несколькими мониторами .
Ну, во-первых, конечно, когда у вас более одного монитора, на экране появляется больше информации, которую система может отслеживать. По той же причине программы работают на большом мониторе медленнее, чем на маленьком.
И если есть только один монитор, то функции вроде MonitorFromPointстановятся тривиальными, если флаг что-то вроде
MONITOR_DEFAULTTONEAREST, потому что, когда есть только один монитор, отвечая на вопросы типа «Какой монитор ближе всего к этой точке»? становится очень легко.
Если ваши два монитора не имеют одинаковые размеры, объединение двух мониторов не будет прямоугольным, что усложнит ограничение на объединение всех мониторов.
Но я подозреваю, что большое наказание для нескольких мониторов срабатывает, если вы допустили ошибку при настройке мониторов на разные цветовые форматы, например, если вы установили один монитор в формат 565, а другой - 24bpp.
Если два монитора не используют один и тот же цветовой формат, программы будут вынуждены использовать DIB вместо DDB для растровых изображений на экране, если окно перемещается в окно с другим цветовым форматом (или, что еще хуже, расположено так, что оно колеблется) два монитора с разными цветовыми форматами). В принципе, программы должны использовать только «наихудший» DIB; например, если один монитор 555, а другой 565, тогда будет достаточно 565 DIB. Однако на практике большинство программ просто используют DIB 24 или 32 бит в секунду, когда сталкиваются с мониторами с разными цветовыми форматами.
(Вы запрашиваете, все ли мониторы имеют одинаковый цветовой формат, вызывая
GetSystemMetrics(SM_SAMEDISPLAYFORMAT).)
Поскольку преобразование формата происходит, когда DIB подключается к устройству с другим цветовым форматом, принуждение программы сохранять свои растровые изображения в качестве DIB означает, что по крайней мере для одного из мониторов (и, вероятно, обоих) вы подвергнетесь преобразование формата, когда этот DIB рисуется на экране. Есть также несколько разных оптимизаций, которые отключаются, когда не все ваши мониторы используют один и тот же цветовой формат, потому что стоимость использования DIB перевешивает экономию от оптимизации.
Поэтому, если вы этого еще не сделали, зайдите в настройки дисплея и убедитесь, что все мониторы установлены на одинаковую глубину цвета. Если вы этого не сделаете, большой класс графических оптимизаций будет потерян.