【问题标题】:How to use a manifest embedded as a resource? (Windows XP/Vista-style controls)如何使用作为资源嵌入的清单? (Windows XP/Vista 风格的控件)
【发布时间】:2009-09-09 21:13:32
【问题描述】:

我有一个作为 Windows 资源嵌入的清单。但正确的应用方法是什么?

更具体地说:

我有我的 .manifest 文件。这是使应用程序使用 Windows XP/Vista 视觉样式中的控件的标准方法。通过与 .exe 位于同一目录并适当命名来应用时,它可以工作。

但是,这种方法相当麻烦。我希望我的 .exe 是独立的。很明显,这是可以做到的,因为我计算机上的许多应用程序都设法使用现代风格,而无需单独的清单文件。

所以我环顾四周,最后发现将清单嵌入为资源。所以我在我的 .rc 文件中添加了这一行:

1 RT_MANIFEST "mdiedit.exe.manifest"

但是接下来我该怎么做呢?

编辑:如果对您有所帮助,我的程序是用 D 语言编写的,并使用 Digital Mars D 和资源编译器构建。没有IDE。但我希望任何适用于 C(++) 的解决方案,当使用命令行工具构建时,也适用于 D。

【问题讨论】:

  • 嗯,你能验证EXE确实包含清单吗?不知道你的环境能不能,但是Visual Studio可以用资源编辑器打开EXE文件。如果您可以打开 RT_MANIFEST 资源并验证内容。
  • 也就是说,从表面上看,您所做的一切都是正确的。如果清单在 EXE 中,则不需要调用单独的 API。

标签: winapi configuration resources manifest


【解决方案1】:

RT_MANIFEST 是一个定义,因此请确保您的资源文件包含正确的标头,或者将 RT_MANIFEST 替换为 24

【讨论】:

  • 成功了,谢谢! (经验教训:DMC 附带的 Windows 头文件已过时。)资源编译器实际上是如何解释未知资源类型的?它们是否就像资源 ID 一样可以是单词或数字?
  • 资源 ID 可以是字符串或数字。 ...如果成功了,如何标记答案?
【解决方案2】:

您是否已将 .rc 文件添加到您的项目中?或者,使用开发环境的资源编译器(例如 brcc32.exe 或 rc.exe)将 .rc 文件编译为 .res 文件,然后将该文件添加到您的项目中。

【讨论】:

  • 已经完成。没有效果。 (如果我没有,那么我的对话框、菜单或图标都不会工作。)也许您的 IDE 在您执行此操作时会自动添加运行时代码?
  • 不,不涉及运行时代码。它将 .rc 文件直接编译成可执行资源。
猜你喜欢
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多