2 tomwillow tomwillow 于 2016.01.30 15:58 提问

VS2010编译的带manifest的C窗口程序,在XP上运行无法显示控件

阅读了很多清单文件的资料,还是有疑问。
.C程序是一个窗口上有一个按钮,调用的API(非MFC),只要加上了清单文件就无法在XP上正常运行,能打开窗口,但不显示XP风格的控件,因为MessageBox上面有按钮连带地MessageBox也弹不出来。

下面是我在程序中加上的内容(换成.manifest文件引用结果一样):
#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_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

我仔细看了虚拟机装的XP系统的WinSxS目录下,有名字带Microsoft.Windows.Common-Controls的文件夹,版本等都一致。不知道为什么程序就是运行不正常。

1个回答

caozhy
caozhy   Ds   Rxr 2016.01.30 16:44
已采纳

在你的程序中调用comctl32的InitCommonControls了么

tomwillow
tomwillow 非常感谢!问题已经解决了!找了好久了都不知道是这个问题。谢谢!
接近 2 年之前 回复
tomwillow
tomwillow 没有呢,就是非常简单的程序,WinMain,然后在WM_CREATE下面建立了一个按钮。
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!