出于多种原因,我需要制作一个在 Windows XP 及更高版本上运行的应用程序。我正在使用 ComCtl32.dll 调用 TaskDialogIndirect。唯一的问题是错误“序号 345 无法位于...”仅出现在 Windows XP 上。该程序在所有其他版本上运行良好。我的 .rc 文件中确实有一个 ID 为 1 的清单。我目前主要使用的唯一东西来自
我在网上找不到这个问题的解决方案。
我的清单:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="*"
name="redacted"
type="win32"
/>
<description>redacted</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
我对 InitCommonControlsEx 的调用:
INITCOMMONCONTROLSEX icc;
icc.dwSize = sizeof(icc);
icc.dwICC = ICC_STANDARD_CLASSES;
InitCommonControlsEx(&icc);
首先,TaskDialogIndirect 支持的最低客户端要求是 Windows Vista,您可能还想查看 this。
您最好的选择可能是XTaskDialog。这可以很好地模拟 Windows 98、Windows ME、Windows 2000、Windows XP 和 Windows 2003 等下层操作系统的 Vista 任务对话框 API。