请教大家,为什么我程序按钮和Windows自带的计算器按钮不一样?
我的程序就是照着Charles Petzold书上的写的一个对话框,但是按钮的显示是当年win95时代的外观,而Windows自带的计算器按钮漂亮多了。
其他别的程序如果有主窗口,然后调出对话框,按钮的外观就和Windows自带的计算器按钮一样。但是我的这个程序就不行,不知为什么?谢谢大家了。

解决方案 »

  1.   

    xp系统下,简单的方法是:写个manifest文件  
       
      例如:text.exe  
      manifest文件名text.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="Microsoft.Windows.Text"  
              type="win32"    
      />    
      <description>Text</description>    
      <dependency>    
              <dependentAssembly>    
                      <assemblyIdentity    
                              type="win32"    
                              name="Microsoft.Windows.Common-Controls"    
                              version="6.0.0.0"    
                              processorArchitecture="X86"    
                              publicKeyToken="6595b64144ccf1df"    
                              language="*"    
                      />    
              </dependentAssembly>    
      </dependency>    
      </assembly>   
      

  2.   

    你。你。。你你也太牛了!!!!!!!!!!!!!!!!!!!!!!但是英雄,我的程序最好是一个exe文件,这样给别人也方便。
    而且,大侠能否解释一下这个manifest原理是什么呢?还有,我的程序的按钮为什么是那样的外观呢?多谢多谢。
      

  3.   

    呵呵!如果你熟悉MFC可以自己自绘Button,如果不熟悉,可以去找一个CButton的扩展类例网上有好多
      

  4.   

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><assemblyIdentity  name="XP style manifest"  processorArchitecture="x86"  version="1.0.0.0"  type="win32"/><dependency>  <dependentAssembly>    <assemblyIdentity      type="win32"      name="Microsoft.Windows.Common-Controls"      version="6.0.0.0"      processorArchitecture="x86"      publicKeyToken="6595b64144ccf1df"      language="*"    />  </dependentAssembly></dependency></assembly>
      大家也看到了,这其实是一个XML文件,打开记事本,复制上面的内容,然后存盘,文件名任意,这里我存为XPStyle.manifest。然后在VC中新建一个MFC AppWizard(exe)工程,Document/View或Dialog均可,接着把XPStyle.manifest复制到工程所在目录,再用记事本或其它文本编辑工具手动修改工程目录下的资源文件(.rc),在文件最后加上一行: 1 24 “XPStyle.manifest”
      在VC中编译并连接工程生成.exe可执行文件,运行一下看看这里我再多解释一下,最后加上的那一行,“1”代表资源ID,必须是“1”。“24”代表资源类型,我想我们对RT_ACCELERATOR、RT_BITMAP、RT_MENU、RT_STRING等资源都非常熟悉,而“24”实际上是RT_MANIFEST。
      

  5.   

    VS2005中编译的程序可以把manifest嵌入到exe中
      

  6.   

    自绘啦,BUTTON的本质其实就是一个窗口,一个寄生于父窗口的子窗口,你想画成啥样就画成啥样,只要你有创意。
      

  7.   

    谢谢大家了。我只会一点api。