带有Delphi 7的GetDpiForMonitor,用于每个监视器的DPI感知

时间:2017-06-18 12:45:40

标签: winapi delphi-7

WinAPI函数GetDpiForMonitor没有Delphi 7的头文件翻译并且在网上搜索我找不到。

如果有人有示例代码显示如何使用Delphi 7中的这个WinAPI函数,那将会有很大帮助。

1 个答案:

答案 0 :(得分:0)

以下是如何动态加载DLL并在Delphi 7中调用函数:

Type
  TMONITOR_DPI_TYPE = (
    MDT_EFFECTIVE_DPI {= 0},
    MDT_ANGULAR_DPI   {= 1},
    MDT_RAW_DPI       {= 2},
    MDT_DEFAULT       {= MDT_EFFECTIVE_DPI });

var
  dpiX              : UINT;
  dpiY              : UINT;
  ErrCode           : HResult;
  hShcore           : THandle;
  GetDpiForMonitor  : function(monitor: HMONITOR; dpiType: TMONITOR_DPI_TYPE; var dpi, dpiY: UINT): HRESULT; stdcall;

begin
  hShcore := GetModuleHandle('Shcore');
  If hShcore <> 0 then GetDpiForMonitor := GetProcAddress(hShcore,'GetDpiForMonitor');
  If @GetDpiForMonitor <> nil then 
    ErrCode := GetDpiForMonitor(Monitor.Handle,MDT_EFFECTIVE_DPI,dpiX,dpiY);
end;