本帖最后由 xa678 于 2011-08-14 08:54:38 编辑

解决方案 »

  1.   

    你应该搜索一下 manifest,VB的按钮其实是标准的按钮,而XP样式的按钮其实是非标的,如果要实现 XP样式按钮,需要使用 manifest,在VC中,可以将 manifest 及数据封装到自己的资源中,而 VB6 就只有通过在外部托一个与执行文件同名的 manifest 文件,在 .net 中,IDE自动将资源套入了manifest信息,所以如果你转换的VB6代码,是标准Windows接口按钮,没有manifest信息,所以样式就和.net的不一样。因为.net没有帮你加入manifest信息,不过采用老办法,在外部生成一个同名的manifest文件一样可以解决这个问题。
    比如你的程序编译后是“工程1.exe”
    那么在与他相同路径的地方建立一个“工程1.exe.manifest”文件,文件内容是文本的,具体为<?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="X86"   
              name="工程1.exe"   
              type="win32"   
      />   
      <description>WindowsExecutable</description>   
      <dependency>   
              <dependentAssembly>   
                      <assemblyIdentity   
                              type="win32"   
                              name="Microsoft.Windows.Common-Controls"   
                              version="6.0.0.0"   
                              processorArchitecture="X86"   
                              publicKeyToken="6595b64144ccf1df"   
                              language="*"   
                      />   
              </dependentAssembly>   
      </dependency>   
      </assembly> 然后运行你的“工程1.exe”,就会发现所有控件都套上了系统样式,VB6也可这么做,至于想封装manifest到程序里,VC可以做到,只是指定资源名和编号而已,但因为VB6的资源管理没那么灵活,所以无法实现。只有挂在外面了