gpt4 book ai didi

mfc - 如何默认激活 "disable display scaling on high dpi settings"

转载 作者:行者123 更新时间:2023-12-01 17:00:40 25 4
gpt4 key购买 nike

我们的应用程序无法在某些具有高 DPI 设置(150% 或更高)的 Windows 8.1 设备上正常运行。具体来说,我们使用 CEF 托管嵌入式 Web 浏览器。所有这些嵌入式 CEF 浏览器都在渲染元素偏移。

选中“在高 DPI 设置上禁用显示缩放”时,应用程序可以正常工作。但是,默认情况下不会选中此选项。

如何确保我的应用程序(基于 MFC)在默认情况下勾选此设置?

我已尝试按照以下帖子在 list 中关闭 DPI 感知:https://msdn.microsoft.com/en-us/magazine/dn574798.aspxhttp://blogs.msdn.com/b/vcblog/archive/2010/03/11/mfc-applications-now-default-to-being-dpi-aware.aspx 。然而,这似乎不起作用。

最佳答案

通过更新 CEF 解决了根本问题。

但是,临时的解决方案(以及这个问题的实际答案,希望对其他人有用)是在我们的( WiX)安装。下面是一些 C++ 代码:

#include "shlwapi.h"

#include <winreg.h>
//
// Include the MSI declarations etc
// - Also ensure the dll is linked with msi.lib
//
#include <msi.h>
#include <msiquery.h>
#pragma comment(lib, "msi.lib")

UINT __stdcall DisableHighDPIAware(MSIHANDLE hInstaller)
{
HKEY key;
DWORD dwDisposition;
LONG error = RegCreateKeyEx(HKEY_LOCAL_MACHINE,(LPCWSTR)L"Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers", 0, NULL, 0, KEY_ALL_ACCESS | KEY_WRITE | KEY_WOW64_64KEY, NULL, &key, &dwDisposition);
if (error != ERROR_SUCCESS)
{
return ERROR_INSTALL_FAILURE;
}

wchar_t pathToApp[MAX_PATH];
DWORD PathSize = sizeof(pathToApp);
error = MsiGetProperty(hInstaller, L"CustomActionData", pathToApp, &PathSize);
if (error != ERROR_SUCCESS)
{
return ERROR_INSTALL_FAILURE;
}

wchar_t* value = L"~ HIGHDPIAWARE";
PathAppend(pathToApp, L"app.exe");

error = RegSetValueEx(key, (LPCWSTR)pathToApp, 0, REG_SZ, (const BYTE*)value, (DWORD)(lstrlen(value) + 1)*sizeof(TCHAR));
if (error != ERROR_SUCCESS)
{
return ERROR_INSTALL_FAILURE;
}

return ERROR_SUCCESS;
}

关于mfc - 如何默认激活 "disable display scaling on high dpi settings",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28242031/

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