2016-05-04 57 views
1

我为TaskDialogIndirect简单的MS的例子(见https://msdn.microsoft.com/en-us/library/windows/desktop/bb760544(v=vs.85).aspx调用TaskDialogIndirect装载机表示序数345未找到

当我运行它,我获得“序号345找不到动态链接库COMCTL32.DLL”

上述页面说它需要ComCtl32.DLL版本6但C:\ Windows \ System32 \ ComCtl32.DLL是5.82.7601.18201,我无法在磁盘上的任何位置找到版本6。

我使用VS2012运行Windows 7。 TaskDialog在Vista中添加了,为什么我没有正确版本的ComCtl32.DLL?

+1

https://msdn.microsoft.com/en-us/library/windows/桌面/ bb773175(v = vs.85)的.aspx –

回答

1

在Windows XP及更高版本中有两个版本的ComCtl32.dll(SxS)。 v5.8x是默认设置,因为可能与新主题/视觉样式不兼容,您需要选择加入v6。大多数新功能和控件仅添加到v6中。

要获得v6版本,您必须将add a manifest添加到您的应用程序中。建议您将清单嵌入到应用程序资源中,但也可以使用外部清单;只需命名XML文件yourappname.exe.manifest即可。

0

这里的代码,应有助于加载正确的共同控制一个共同的和有用的块,comctl32.dll

#if defined _M_IX86 
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") 
#elif defined _M_IA64 
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"") 
#elif defined _M_X64 
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") 
#else 
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") 
#endif