Согласно этой статье Windows отправляет сообщение WM_DISPLAYCHANGE
при изменении разрешения экрана, а также при добавлении или удалении дисплея.
Если вам нужно реагировать на изменения размера рабочего стола из-за добавления или удаления монитора, вы можете сделать это в обработчике этого сообщения. LPARAM
дает вам новое разрешение экрана, на котором расположено окно. Обратите внимание, что это разрешение будет масштабироваться, если вы используете что-либо кроме 100% для масштабирования системного DPI, и ваша программа не с поддержкой DPI .
В качестве альтернативы используйте функцию EnumDisplayMonitors
, чтобы получить разрешение экрана для каждого подключенного монитора и относительное положение мониторов на виртуальном рабочем столе. Эта функция использует значения пикселей реального устройства независимо от масштабирования DPI.