Инициализация точек на дюйм и GetClientRect - PullRequest
0 голосов
/ 19 сентября 2019

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

Проблема в том, что GetClientRect возвращает другой размер при первом открытии моего диалога.То, что я получаю, это немасштабированный размер.Все последующие вызовы возвращают масштабированный размер (в моем случае настройки dpi - 150%).

Пример: первый вызов возвращает размер 1519,1294.Все вызовы после того, как я открыл свой диалог в первый раз, возвращают 2278,1942 (150%).

Кажется, что открытие моего диалога автоматически инициализирует масштабирование точек на дюйм. Есть ли способ, которым я могу вручную инициализировать масштабирование точек на дюйм перед моим первым вызовом GetClientRect?

Мой текущий способ - быстро открыть и закрыть диалоговое окно при первом его использовании.

Обратите внимание, этот код находится в dll-плагине.Я получаю обратный вызов из основного приложения, где я создаю поток STA, открывающий мой диалог.

...