SQLRU.net
Разработка приложений баз данных

Начало » Программирование » Delphi » Поведение GetScaleFactorForMonitor- DEVICE_SCALE_FACTOR - Win10
Поведение GetScaleFactorForMonitor- DEVICE_SCALE_FACTOR - Win10 [сообщение #5979] Fri, 14 March 2025 15:43 Переход к предыдущему сообщению
Keks в настоящее время не в онлайне  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));
Я понимаю разные среды программирования но это вызов системных функций, что не так?
 
Сообщение не прочитано
Сообщение не прочитано
Предыдущая тема: Поведение GetScaleFactorForMonitor- DEVICE_SCALE_FACTOR - Win10 - Del
Следующая тема: Модальная форма, OnKeyPress и прочие (OnKey*) и код #13
Переход к форуму:
  


Текущее время: Thu Mar 27 05:41:36 GMT+3 2025

Общее время, затраченное на создание страницы: 0.00937 секунд