【问题标题】:GetWindowRect Returns 1/4 Window AreaGetWindowRect 返回 1/4 窗口区域
【发布时间】:2016-08-30 13:28:10
【问题描述】:

调用 GetWindowRect 时,我得到的结果表明窗口是其实际大小的 1/4。

我正在使用带有 4K 显示器的 Windows 10,并且某些 UI 元素已缩放,我想知道这是否有帮助。

我没有任何代码或工作要展示,我只是导入和调用 User32 函数。 rect 字段以正确的顺序声明。

谁能告诉我为什么尺寸不正确?也许如何适当地扩展它们?

【问题讨论】:

  • 2 票接近,1 负分,0 cmets。经典。

标签: c# windows winapi user32


【解决方案1】:

dwAttribute 参数中使用DwmGetWindowAttributeDWMWA_EXTENDED_FRAME_BOUNDS。 这应该以像素为单位为您提供窗口的实际大小。 在这里阅读更多:https://docs.microsoft.com/en-us/windows/win32/api/dwmapi/nf-dwmapi-dwmgetwindowattribute

【讨论】:

    【解决方案2】:

    您的进程需要标记为可识别 DPI,这是您在应用程序清单中执行的操作。如果不这样做,您的应用程序将受到 DPI 虚拟化的影响。见:Writing DPI-Aware Desktop and Win32 Applications

    【讨论】:

    • 嗯。心想可能是这样。我不拥有这个过程。我怎么知道它是如何被缩放的?
    • 您的矩形坐标不是您所期望的这一事实告诉您。
    • 我所知道的是它们不正确...我正在尝试适当地调整它们。你知道如何发现比例因子吗?
    • 我认为这并不容易。您可能会以错误的方式进行此操作。
    • 你为什么认为这是错误的方法?那么,您能否提出另一种从另一个进程捕获窗口边界的方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多