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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
解决VS2010编译的程序在XP不能运行的问题
解决VS2010编译的程序在XP不能运行的问题
让用VS2012/VS2013编写的程序在XP中顺利运行
微软为了推销自家平台,VS2012和VS2013编写的应用程序只能在Vista/Win7/Win8上运行。但幸好还保留了生成XP程序的设置项。
关于vs2010运行C程序时,运行结果窗口一闪而过的问题
用VC++6.0和VS中的C++编程,今天正常安装好后,编写一个正确的程序,可运行的时候,DOS窗口一晃而过,也算是正常编译了,但我不懂的是它为什么消失得这么快? 会出现dos界面是因为你程序中可能用到了需要用dos显示结果(或者输入之类的)的函数,比如printf()函数,马上消失是因为你执行程序是一步到位的,dos界面做完你需要它做的事情之后就被销毁了,如果你想看清楚整个过程,可以设置断点,
vs2010编译程序无法在XP SP2以前运行的解决方案
.686p  .model flat, stdcall public _imp__DecodePointer@4 public _imp__EncodePointer@4 .data _imp__DecodePointer@4 dq dummy32 _imp__EncodePointer@4 dq dummy32 .code dummy32 PROC p: DWORD mov
VS2013/VS2010下如何让开发的程序能够在XP下运行
VS2013 VS2010下如何让开发的程序能够在XP下运行? 通常情况下,在Win7、Win8下用VS2013/2010开发的程序是不能在XP下正常运行的,提示“不是有效的Win32程序”字样(具体的忘了,但是这么个意思),不过,只要按文档中的修改相应工程的配置,就能解决这个问题。
如何使得WIN7下用VS2010做出的MFC程序具有XP风格(摆脱传统界面的效果)
VS2010建一个MFC的工程后,运行生成的对话框还有按钮之类的资源控件的风格是XP以前的传统的界面风格,效果不太令人满意。                                 比较上面的图片,可以明显看到它们的不同。要怎么做呢? 1. 将下面这段XML保存到你的工程目录下,文件名为XPStyle.manifest(注意后缀不是xml)
vs2010 MFC +win7下的程序 在win7上正常运行,XP就出错(ADO数据库连接出错)
写的一个软件,以数据库文件mdb作为打开文件。 使用ADO连接数据库, 引入了msado15.dll。以前一直很正常。 最近的版本总是在xp上测试打开、新建文件都失败。出现的错误是unknow software exception... 找了几天错误,终于发现不是自己的代码问题。而可能是编译环境问题。于是重装了两次vs2010。问题依旧。 好不容易找到下面这篇文章。发现是a
VS2010开发的WinForm程序如何在xp下运行
在VS2010开发环境下,用C#语言写了一个WinForm程序,作为上位机界面。当该程序放在装有xp操作系统的工控机中运行时,出现了一下问题: 问题1:缺乏相应的dotNet框架 VS2010在开发时默认使用的是dotNet4.0的框架,故需要在xp系统上安装dotNet4.0.但安装之后却出现了问题2; 问题2:运行程序时没有任何相应 为了解决该问
用VS2013在win7下编写的C++程序怎么在XP下运行?
 用VS2013在win7下编写的C++程序在XP下运行的错误与解决。   1.在xp下运行报错为:“不是有效的win32应用程序。” 解决方法: 【配置属性】-【常规】-【平台工具集】,选择“VisualStudio 2013 (v120 XP)”。     <img width="640" height="498" alt="计算机生成了可选文字: W1n32project
解决VS2012/VS2013/VS2015下编译的程序无法在XP下运行的问题
微软为了推销自家平台,默认配置下VS2012和VS2013编写的应用程序只能在Vista/Win7/Win8上运行。但幸好还保留了生成XP程序的设置项。XP和Win2003的用户还是大量存在的,我们程序软件的发布不能不考虑他们。   1. 项目菜单->项目属性->配置属性->常规->平台工具集,选择“VS2013WindowsXP(v120_xp)”;   2. 项目菜单->项目属性->配置属性