相当于Application.EnableVisualStyles的原生调用是什么?

What is the native call equivalent to Application.EnableVisualStyles?

我有一个遗留 windows 应用程序在使用最新的 Win10 Creators 更新时出现屏幕渲染问题。我看到 .NET 应用程序可以 the issue by calling Application.EnableVisualStyles。但是鉴于我的应用程序是在 dotnet 之前编写的(在 Delphi 6 中),我希望有一个本机系统调用可以用来做同样的事情。

在Delphi6中,不能直接使用视觉样式。您需要使用第三方库,Mike Lischke 的 Windows XP Theme Manager。事实上,这个库构成了 Delphi 7 中包含的内置支持的基础,通过阅读源代码可以很容易地观察到这一点。

为了在您的 Delphi 6 程序中使用它,您需要执行以下步骤:

  1. 在您的项目中包含 XP 主题管理器库。
  2. Link 指定 comctl32 v6 的可执行文件的应用程序清单资源。网上有很多资源解释如何做到这一点,我就不再重复了。

请注意,如果您的程序当前没有 link 应用程序清单,那么您可能会发现这样做时其他行为会发生变化。如果没有清单,程序将在 UAC 下虚拟化。使用清单,虚拟化被禁用。现在,早在 2005 年,Vista 就引入了虚拟化,作为帮助开发人员适应 UAC 引入的变化的拐杖。如果您还没有将您的程序适配为 UAC,那么我建议您可能是时候适配了!