WinAPI函數GetDpiForMonitor沒有Delphi 7的標題轉換和搜索我無法找到的互聯網。GetDpiForMonitor與Delphi 7的每個監視器DPI感知
如果有人有示例代碼顯示如何使用Delphi 7中的WinAPI函數,這將有很大的幫助。
WinAPI函數GetDpiForMonitor沒有Delphi 7的標題轉換和搜索我無法找到的互聯網。GetDpiForMonitor與Delphi 7的每個監視器DPI感知
如果有人有示例代碼顯示如何使用Delphi 7中的WinAPI函數,這將有很大的幫助。
這裏是如何動態地加載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;
這很好。做得好。你應該確保枚舉聲明MINENUMSIZE爲4 –
我的另一個意見是你應該使用LoadLibrary來獲取模塊句柄。它可能會被加載。或者,更糟糕的是,在您調用函數之前它可能會被卸載。 –
這是一個非常簡單的功能轉換。你有沒有嘗試過?如果對你來說太難了,那就是頭文件翻譯的絕地項目。 –
@DavidHeffernan我發佈了這個作爲互聯網搜索沒有解決清晰的Delphi代碼,因爲其他人也可能需要它,我發佈了這個問題,以便將來的搜索將產生一個答案。我查看過JEDI API庫,它不包含任何對「GetDpiForMonitor」的引用。 – bLight
你爲什麼不自己寫翻譯。這很容易。你爲什麼不試試。請嘗試。 –