gpt4 book ai didi

c++ - 设置高 DPI 时防止我的 Win32 应用程序的 UI 元素被放大

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:57:33 26 4
gpt4 key购买 nike

当窗口设置为“将文本大小调整为”125% 时,我的 Win32 应用程序的 UI(但不是窗口大小)按比例放大。这会导致文本字符串被截断并且 UI 元素从边缘消失 window 。

我想防止这种情况发生,这样文本就不会放大,应用程序也能正确显示。由于让这个旧的遗留应用程序正确识别 DPI 的时间投入太高,我只想通过防止 Windows 通过调整 UI 元素的大小破坏 UI 来使该应用程序可用。

我曾尝试在启动期间调用 SetProcessDPIAware(),当它不起作用时,会在其 list 中表明该应用程序是 DPI Aware。然而,这两种措施都没有任何效果。

我用来指定 DPI 感知的 list 片段:

<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<asmv3:application
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:windowsSettings
xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>

最佳答案

我在使用 SDL OpenGL 时遇到了类似的问题。 Windows DPI 缩放在不知情的应用程序上执行得非常差,例如放大全屏视口(viewport)和裁剪边。

我对 list 没有任何运气。

我能够通过调用 SetProcessDPIAware(); 来解决它,但它必须在 SDLmain 执行之前发生。也许您的“启动期间”还不够早。我将它用作 main 函数之前的全局变量初始值设定项:

BOOL dpi_result = SetProcessDPIAware();

int main( int argc, char **argv )
{
//...

关于c++ - 设置高 DPI 时防止我的 Win32 应用程序的 UI 元素被放大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16062062/

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