如何在 Windows 应用程序中启用常用控件

2023-11-27

我正在尝试在应用程序中启用通用控件。我按照中给出的步骤进行操作这篇 MSDN 文章,特别是该部分在仅使用标准扩展的应用程序中使用 ComCtl32.dll 版本 6。但我无法让它发挥作用。

我做的唯一与本文不同的事情是我将清单信息添加到项目属性页|配置属性|链接器|清单文件 |附加清单依赖项。这是我在文本框中输入的内容:

“类型='Win32'名称='Microsoft.Windows.Common-Controls'版本='6.0.0.0'processorArchitecture='*'publicKeyToken='6595b64144ccf1df'语言='*'xmlns='http://schemas.microsoft.com/developer/msbuild/2003'";%(附加清单依赖项)

当我检查生成的清单(MyApp.exe.intermediate.manifest)时,它看起来是正确的。

我还添加了对 ComCtl32.lib 的链接依赖项项目属性 |配置属性|链接器|输入|附加依赖项。我还在启动时调用 InitCommonControlsEx,并初始化了 INITCOMMONCONTROLSEX 结构,如下所示:

INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_STANDARD_CLASSES;

但对 InitCommonControlsEx 的调用始终返回 FALSE(这意味着失败)。经过一番调查,我发现从 GetLastError 返回的错误代码是 ERROR_FILE_NOT_FOUND。可能是什么问题呢?

UPDATE:我注意到一些可能与“文件未找到错误”相关的内容。当我从调试器运行应用程序时,输出窗口中的一行是:

'MyApp.exe':已加载'C:\ Windows \ winsxs \ x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.6002.18305_none_88f3a38569c2c436 \ comctl32.dll',无法找到或打开PDB文件

然而,对于一些更标准的库,如 kernel32.lib、user32.lib 等,有很多类似的行:

“MyApp.exe”:已加载“C:\Windows\System32\ntdll.dll”,无法找到或打开 PDB 文件

“MyApp.exe”:已加载“C:\Windows\System32\kernel32.dll”,无法找到或打开 PDB 文件

“MyApp.exe”:已加载“C:\Windows\System32\msvcrt.dll”,无法找到或打开 PDB 文件

“MyApp.exe”:已加载“C:\Windows\System32\user32.dll”,无法找到或打开 PDB 文件

这些行总是出现在任何应用程序中,并且不会引起任何问题。 ComCtl32.dll 会有所不同吗?


好的。我对此做了一些功课,并自己发现了一些新东西。我最终如何让它发挥作用的是almost你想做什么:

  1. Go to 项目/属性/链接器/清单文件/其他清单依赖项
  2. 输入以下文字verbatim(意味着所有单引号和双引号如下)。顺便说一句,这一切都在一行上。

    "type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"

  3. 保存您的设置并执行完整项目(如果不是解决方案)重建以强制清单和 PCH 重新生成。

在此之前,我的加载列表中包含以下内容:

已加载 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.17514_none_ec83dffa859149af\comctl32.dll'

在手动更改公共控件的清单版本后,加载列表现在包含此内容(并正确回答 TRUEInitCommonControlsEx(),这首先是这一切的重点):

已加载 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_41e6975e2bd6f2b2\comctl32.dll'

注意:您也可以使用源内 #pragma 来执行此操作,最好在 stdafx.h 标头中,但我更喜欢这种方式。

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Windows 应用程序中启用常用控件 的相关文章

随机推荐

  • Python中的反平方根[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 是否有任何 Python
  • 如何在 .NET 中创建子集字体?

    我有一个 Silverlight 应用程序 需要在其中嵌入一些不太常见的字体 这对我来说非常简单 只需复制 TTF OTF 并使用我的应用程序进行编译即可 然而 在很多情况下 实际只使用了 5 10 个字符 在其他情况下 某些字体文件非常大
  • 将 Hibernate 升级到 5.1.0 后如何导出架构?

    我最近将 Hibernate 从 5 0 更新到 5 1SchemaExportAPI 已更改 迁移文档提到了这一更改 但没有解释如何使用较新的 API 此外 我还没有找到任何其他支持示例来修复重大更改 我偶然发现了这个代码差异 它帮助我解
  • 删除用作外键的对象

    我有下一个型号 class Target models Model name models CharField max length 100 blank False class SubTarget models Model target m
  • MVC JSON 操作返回 bool

    我的 ASP NET MVC 操作是这样写的 GET TaxStatements CalculateTax prettyId public ActionResult CalculateTax int prettyId if prettyId
  • 检测winforms中的箭头键[重复]

    这个问题在这里已经有答案了 可能的重复 上 下 左 右方向键不触发 KeyDown 事件 先看代码 using System using System Collections Generic using System ComponentMo
  • 通过 Composer 安装 Laravel 时获取建议

    从昨天开始 当我通过以下方式创建 laravel 项目时 composer create project prefer dist laravel laravel project name 我收到这些建议消息 这是正常现象还是我搞砸了什么 我
  • 如何指定实际的 x 轴值以在 R 中绘制为 x 轴刻度

    我正在 R 中创建一个绘图 但我不喜欢 R 绘制的 x 轴值 例如 x lt seq 10 200 10 y lt runif x plot x y 这将绘制一个在 X 轴上具有以下值的图表 50 100 150 200 但是 我想绘制 2
  • MySQL - IN() 中的 ORDER BY 值

    我希望对以下查询中返回的项目进行排序它们输入 IN 函数的顺序 INPUT SELECT id name FROM mytable WHERE name IN B A D E C OUTPUT id name 5 B 6 B 1 D 15
  • 如何将流程图转化为实施? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 编辑 简介 为了吸引更广泛的读者 我通过一个复杂的 有点乏味的 现实生活中的例子重新阐述了我最初的问题 原始问题如下 远 所示 Tom 刚刚被 Acme Inc 聘为初级软件工程
  • 如何使用 c# 使用 httpwebrequest 从 json api 获取数据?

    我想从中获取所有变量https api coinmarketcap com v1 ticker 在我的 C 控制台应用程序中 我怎样才能做到这一点 我首先将整个页面作为流获取 现在做什么 private static void start
  • Swift 错误:对泛型类型 Dictionary 的引用需要 <...> 中的参数

    错误Reference to generic type Dictionary requires arguments in lt gt 出现在函数的第一行 我试图让该函数返回从 api 检索到的 NSDictionary 有人知道这里会发生什
  • Java 等待线程列表

    有没有办法获取对象上的等待线程列表 等待线程数 如果您正在使用synchronized关键字 没有 但如果您正在使用java util concurrent锁 你可以 ReentrantLock有一个受保护的方法getWaitingThre
  • React Native - 将登录的 Firebase 用户重定向到 Home 组件

    我的目标是将用户重定向到Home如果用户已经登录 则组件 我可以登录用户并将其重定向到Home除非 logInUser 叫做 然而 一旦重定向到Home组件 如果我刷新模拟器 应用程序将返回到Login成分 我尝试使用来解决这个问题comp
  • 将列表中的每个元素乘以一个数字

    我想将列表中的所有元素乘以一个数字 我知道其他方法可以做到这一点 但我想知道为什么这不起作用 我得到的列表与输出完全相同 lst eval input enter a list for num in lst num num 2 print
  • 将 JPanel 置于 java 中其他对象的前面 (SWING)

    我想在应用程序处理时发出加载消息 所以我使用了JPanel over a JTree 但是当用户点击JPanel the JTree将被选择并且JPanel会去后面 隐藏之后JPanel 它再也不会出现 我不知道为什么 但它似乎永远不会走在
  • 是否可以基于 MySQL 中的列之一进行选择插入?

    以下插入是否基于 MySQL 中可能的列之一的选择 INSERT INTO student fees id name fees VALUES 1 SELECT name from students where student id 1 20
  • 如何在 AWS ElasticBeanstalk 和 Nginx 上使用 OAuth2 的 Spring Boot 应用程序上强制使用 SSL?

    我正在尝试使用参考文档强制使用 SSL https docs spring io spring boot docs current reference html howto security html howto enable https
  • 如何实现可取消的事件?

    在 System ComponentModel 中 有一个名为 CancelEventArgs 的类 其中包含可以在事件侦听器中设置的 Cancel 成员 MSDN 上的文档解释了如何使用它来取消侦听器内的事件 但如何使用它来实现我自己的可
  • 如何在 Windows 应用程序中启用常用控件

    我正在尝试在应用程序中启用通用控件 我按照中给出的步骤进行操作这篇 MSDN 文章 特别是该部分在仅使用标准扩展的应用程序中使用 ComCtl32 dll 版本 6 但我无法让它发挥作用 我做的唯一与本文不同的事情是我将清单信息添加到项目属