gpt4 book ai didi

c++ - Visual Studio 创建错误大小的窗口和错误的系统指标

转载 作者:行者123 更新时间:2023-11-28 02:08:02 25 4
gpt4 key购买 nike

没关系,这个问题是重复的。我也许可以从其他来源弄清楚这一点。

我很困惑。我正在处理我的项目并意识到使用 CreateWindowEx() 创建的窗口比我指定的要大。我注意到 Release模式下的窗口比 Debug模式下的窗口大。然后我获取了 GetSystemMetrics(SM_CXSCREEN) 和 SM_CXFULLSCREEN 的值,并注意到在 Debug模式下它给了我 1920 x 1080,这是正确的,但在 Release模式下它给了我 1536 x 864。

此外,如果我只是启动一个新的 Win32 项目,只需按 ctrl + F5 即可启动并准备运行,我在调试和 Release模式下都会得到错误的值,与以前的值相同,并且窗口更大.

我看不出提供任何代码有何帮助,我可以制作一段视频,但是......这根本没有意义。任何人都可以通过启动一个新的 Win32 项目来查看它是否发生在他们身上,并且看到 1600 x 900 实际上占用了那么多空间?因为 1600 x 900 在不应该占据我的整个屏幕的情况下占据了我的整个屏幕。

谢谢。

在进一步检查时,它给我的 1536 x 864 分辨率是应有尺寸的 80%,换句话说,它应该是倒数的 1.25 倍。此外,如果我将桌面分辨率更改为 1600 x 900,则指标会给出 1280 x 720,这又是 80%,或者分辨率比给定的大 1.25。

最佳答案

好吧,这是重复的,但如果这对任何人有帮助,我将解释 DPI 缩放的问题。基本上默认的 Windows 设置是 96 DPI。控制面板中有一些选项可以“让东西变大”,这样看起来更舒服。我的 slider 设置到中间那个,相当于大 125%,或 120 dpi,这就是系统指标返回错误值的原因,而我的窗口更大。 dpi 变大,因此系统假定它必须根据放大比例绘制更大的所有内容。如果你认为有人将一个窗口编程为 200 像素,当有人使用超双倍分辨率显示器运行它时,它仍然是 200 像素,但物理尺寸的一半,比如英寸。因此,通过将 dpi“设置”(不是 dpi,而是 dpi“设置”)从 96 加倍到 194,或者将其放大 200%,使窗口占据 400 个像素,但与原始显示的大小相同。

无论如何,如果在 Visual Studio 上,最简单的解决方法就是通过项目属性,进入“ list ”菜单,然后选择“输入/输出”,最后一个选项应该是 DPI 感知。我的是“无”。在大多数情况下,只需要将其设置为“高 DPI 感知”,即可解决问题。另一个选项是“每个监视器 DPI 感知”,这意味着它将以动态方式进行相应调整,例如,在应用程序运行时更改 dpi 缩放比例,或者在运行时将窗口移动到另一个监视器上。高 DPI 感知设置将在启动时进行检查。

有趣的是,如果您转到任何 exe 的属性,并在兼容性选项卡下,您可以选中“在高 DPI 设置上禁用显示缩放”,这也会起作用。最后,还有一个免费程序,现在归微软所有,叫做 Process Explorer,它基本上类似于具有额外功能的任务管理器,您可以选择 DPI Awareness 列并查看哪些程序是 DPI 感知的。是的,DPI Awareness 是一回事,我觉得很愚蠢。还有很多其他方法可以做到这一点,比如函数调用和合并 list ,但我对此一无所知,现在累得喘不过气来。

关于c++ - Visual Studio 创建错误大小的窗口和错误的系统指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36750392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com