Размер и положение элемента управления изменяются окнами (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.
Задача ещё не решена.
Других решений пока нет …