加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何将DECLARE_HANDLE和后续的consts从windef.h转换为Delphi

发布时间:2020-12-15 04:18:31 所属栏目:大数据 来源:网络整理
导读:以下代码来自 Windows 10 Anniversary Update SDK.我需要常量句柄才能在Delphi中使用API??,因为截至今天,Delphi中不包含这些头文件. DECLARE_HANDLE(DPI_AWARENESS_CONTEXT); #define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1) #define DP
以下代码来自 Windows 10 Anniversary Update SDK.我需要常量句柄才能在Delphi中使用API??,因为截至今天,Delphi中不包含这些头文件.
DECLARE_HANDLE(DPI_AWARENESS_CONTEXT);

  #define DPI_AWARENESS_CONTEXT_UNAWARE           ((DPI_AWARENESS_CONTEXT)-1)
  #define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE      ((DPI_AWARENESS_CONTEXT)-2)
  #define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3)

当我在各种DPI场景中使用GetThreadDpiAwarenessContext时,我已经了解了NativeUInts的值:

DPI_AWARENESS_CONTEXT_UNAWARE = 16;  
  DPI_AWARENESS_CONTEXT_SYSTEM_AWARE = 17;
  DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = 18;

但我想100%肯定这些价值观是面向未来的.它们在SetThreadDpiAwarenessContext通话中工作并具有预期效果,但我不清楚这些值是如何得出的.除了显式整数声明之外,我无法在Delphi中复制产生这些结果的头部构造.

解决方法

要在 SetThreadDpiAwarenessContext中使用,您应将其声明为
type
  DPI_AWARENESS_CONTEXT = type THandle;
const
  DPI_AWARENESS_CONTEXT_UNAWARE          = DPI_AWARENESS_CONTEXT(-1);
  DPI_AWARENESS_CONTEXT_SYSTEM_AWARE     = DPI_AWARENESS_CONTEXT(-2);
  DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE= DPI_AWARENESS_CONTEXT(-3);

但是当您从GetThreadDpiAwarenessContext获得响应时,您需要在收到的值上使用GetAwarenessFromDpiAwarenessContext并将其与DPI_AWARENESS枚举进行比较.

您不能直接比较DPI_AWARENESS_CONTEXT,因为它包含多条信息,Microsoft可能会在将来更改它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读