Начало » Программирование » Delphi » Поведение GetScaleFactorForMonitor- DEVICE_SCALE_FACTOR - Win10
Поведение GetScaleFactorForMonitor- DEVICE_SCALE_FACTOR - Win10 [сообщение #5979] |
Fri, 14 March 2025 15:43  |
Keks
Сообщений: 5 Зарегистрирован: April 2024
|
Junior Member |
|
|
Надо была подсчитать мне
PixelsPerInch
и размеры монитора
GetSystemMetrics(SM_CXSCREEN);
GetSystemMetrics(SM_CYSCREEN);
Начал с D7 c параметров экрана 125%
получил результаты
SM_CXSCREEN 1536
SM_CYSCREEN 864
Screen.PixelsPerInch 96
Нашел код на Lazarus под Win10
DEVICE_SCALE_FACTOR 125
SM_CXSCREEN 1536
SM_CYSCREEN 864
адаптировал D7 под Win10
DEVICE_SCALE_FACTOR 100
SM_CXSCREEN 1536
SM_CYSCREEN 864
Screen.PixelsPerInch 96
Закомпилировал под D12.1
DEVICE_SCALE_FACTOR 125
SM_CXSCREEN 1920
SM_CYSCREEN 1080
Screen.PixelsPerInch 96
Один код для вызова функций MS
три разных результата D7, D12, Lazarus
Кусок кода прилагаю
var
DEVICE_SCALE_FACTOR: UINT;
...
GetScaleFactorForMonitor: function(monitor: HMONITOR;
var DEVICE_SCALE_FACTOR: UINT): HRESULT; stdcall;
...
hShcore := GetModuleHandle('Shcore');
GetScaleFactorForMonitor := GetProcAddress(hShcore, 'GetScaleFactorForMonitor');
ErrCode := GetScaleFactorForMonitor(Monitor.Handle, DEVICE_SCALE_FACTOR);
Memo1.Clear;
Memo1.Lines.Add('DEVICE_SCALE_FACTOR ' + IntToStr(DEVICE_SCALE_FACTOR));
Я понимаю разные среды программирования но это вызов системных функций, что не так?
|
|
|
|
Переход к форуму:
Текущее время: Wed Mar 26 01:32:13 GMT+3 2025
Общее время, затраченное на создание страницы: 0.00914 секунд
|