Как получить масштабный коэффициент dwm для процесса, не поддерживающего dpi?

Размер и положение элемента управления изменяются окнами (dwm). Мне нужен способ получить точное масштабирование по x и y, чтобы уравновесить это.

Я не могу использовать манифест, потому что я пишу плагин для .exe (3ds Max).
Я не могу изменить манифест 3dsMax (я не Autodesk. Я не могу позвонить setprocessdpiawareness() опять же потому что я плагин (dll)
в другой exe и я бы убил макет моего родительского процесса.

Решение должно работать в Windows 7, 8, 10. Поэтому я не могу использовать вызовы, которые были введены в 10 или 8.1

Я уже попробовал:

LogicalToPhysicalPoint(0,& p1);

PhysicalToLogicalPoint(0, &p2);

Это ничего не меняет (ТОЧКИ неизменны). Я использую старую школу C ++ и общие элементы управления (подклассы). Нет WPF, опять же, потому что я не могу использовать WPF, так как он не работает с моим родительским exe.

HWND hw = CreateWindowEx(0, L"STATIC", L"thumbnails",
WS_CHILD | WS_VISIBLE | SS_WHITEFRAME | SS_BITMAP ,
9*2, 64*2, 90*2, 46*2,  hParentDialog, 0, 0, 0);

После добавления волшебного «2 *» к размеру и положению элементов управления я получаю его там, где хочу. Но это хак, который работает только на моей текущей машине с текущим монитором.

Я хотел бы заменить «2» на множитель, который применяется dwm.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector