0

我有一个项目,为了 MUI 的目的,在资源 DLL 中嵌入了一些图标、位图和字符串。这些都在 Windows 7 中工作得很好,但只有字符串和位图在 XP 中工作。我使用 VS2012 在 Windows 7 上构建应用程序,使用 Visual Studio 2010 (v100) 作为实际工具集。

由于 XP 本身不支持 MUI,因此我根据MSDN 上本文的步骤 5.1c 和 5.2 以编程方式获取适当资源 DLL 的句柄。

在我从 XP 上的资源中为我的图标尝试 LoadImage 后,GetLastError 的结果是 1813,或 ERROR_RESOURCE_TYPE_NOT_FOUND。在同一资源句柄上为位图或 LoadString 调用 LoadImage 可以正常工作,并且确实,我的字符串和位图会出现在适当的位置。

我注意到:如果我尝试通过打开应用程序的 DLL 来设置快捷方式的图标,Windows 7 没有问题,但 Windows XP 报告该文件不包含图标。如果我将它们复制过来,XP 自己加载 ico 文件没有问题,所以我不认为它们的格式不好,除非资源编译器以某种方式破坏它们。如果我查看资源编辑器中的图标,它应该显示为 16x16 32 位 BMP 文件。

4

2 回答 2

1

当您创建 MUI 解决方案时,您的资源在与语言无关的 DLL(通常包含图标、清单等)和特定于语言的 DLL(通常包含字符串、对话框等)之间进行拆分。

来自MSDN:“Windows Vista 之前的资源加载函数(例如 LoadString、LoadIcon、LoadBitmap、FormatMessage 等)不支持 MUI。”

您的字符串和图标可能不在同一个 DLL 中,XP 不会去寻找它们。我链接到的文章解释了如何使 MUI 在 Windows XP 上运行。

于 2012-06-20T13:19:34.607 回答
1

我的问题是由VS2012引起的。我不确定使用 VS2010 工具在 VS2010 中构建资源 DLL 与使用 VS2010 工具在 VS2012 中构建它们之间有什么区别,但有一个。

于 2012-06-20T22:01:15.040 回答