DLL是我开发的程序,EXE是软件商的软件,EXE没有加载manifest,EXE通过一个接口程序调用的DLL。现在我在DLL里面做了对话框,也加载了manifest,但是dll里面的对话框无法显示XP风格。
有没有办法EXE不加载manifest的时候,而DLL能实现XP风格。请指点,这个问题已经困扰了半年未解决了,求高手!帮我解决的直接给100分了:)

解决方案 »

  1.   

    DLL里面的MANIFEST_RESOURCE_ID的值改成2
      

  2.   

    我一般是在 stdafx.h 中加那一段代码
      

  3.   

    把manifest加入资源,但是仅仅目标为.exe时有效,.dll无效。也就是说如果使用这个DLL的EXE程序没有用XP效果,这个就没用。
      

  4.   

    所以要么用EXE用manifest,要么是界面库
      

  5.   

    那也就是说,EXE不用manifest,DLL就只能通过程序来重画界面了
      

  6.   

    #define MANIFEST_RESOURCE_ID 2在你的DLL资源中加上下面(YourApp要适当的修改):MANIFEST_RESOURCE_ID RT_MANIFEST "YourApp.manifest"
      

  7.   

    用VS2005试了一下,是可以的:
    #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")VC6应该也可以,估计是你哪里没搞对。
      

  8.   

    下午一直卡在这,本来上次,我搞定了来着。一点点比较两个Project才找到区别
    1, 新建文件*.manifest, 内容为:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <noInherit/>
      <assemblyIdentity
       processorArchitecture="*"
       type="win32"
       name="MyOfficeNetAddin"
       version="1.0.0.0"/>
      <description>My Office Addin built with .Net</description>
      <dependency optional="yes">
        <dependentAssembly>
          <assemblyIdentity
           type="win32"
           name="Microsoft.Windows.Common-Controls"
           version="6.0.1.0"
           publicKeyToken="6595b64144ccf1df"
           language="*"
           processorArchitecture="*"/>
        </dependentAssembly>
      </dependency>
    </assembly>
    点击资源,添加现有项,把这个文件包含进项目2, 项目->属性,配置属性, c/c++, 命令行,附加选项, 输入: /D ISOLATION_AWARE_ENABLED