这是一个老掉牙的问题了,现在写,一是因为我才接触这一类界面美化(以前一直以功能为主,需要漂亮界面也都是自己画的),二是发现网上的内容很多不准确,所以在这里整理一下。

1,Manifest方法(下面其它方法也都是以此为基础的)

  • 用文本编辑器编写一个App.exe.Manifest文件,放到App.exe同文件夹下,注意与App同名。
  • <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentityname="XP style manifest"processorArchitecture="x86"version="1.0.0.0"type="win32"/>
    <dependency><dependentAssembly><assemblyIdentitytype="win32"name="Microsoft.Windows.Common-Controls"version="6.0.0.0"processorArchitecture="x86"publicKeyToken="6595b64144ccf1df"language="*"/></dependentAssembly>
    </dependency>
    </assembly>

    在启动窗体代码中加入窗口初始化代码。※ 风格代码需要在加载窗体之前运行,所以不要在Form_load中初始化,否则窗口无法加载

  • Private Declare Sub InitCommonControls Lib "comctl32.dll" ()Private Sub Form_Initialize()InitCommonControls
    End Sub

    或者在模块中加入类似代码,并把启动过程设置为Sub Main(),上面的简单,下面的复杂,两个实测都可用。

  • Private Declare Sub InitCommonControls Lib "comctl32.dll" ()Private Sub Form_Initialize()InitCommonControls
    End Sub

    函数InitCommonControls是个空函数,不做任何事情,只改变入口点,会影响(大部分)通用控件。InitCommonControlsEx则可以指定要初始化的控件。

  • Private Declare Function InitCommonControlsEx Lib "comctl32.dll" (iccex As tagInitCommonControlsEx) As BooleanPrivate Type tagInitCommonControlsExlngSize As LonglngICC As Long
    End TypePrivate Const ICC_USEREX_CLASSES = &H200'VB实现XP风格的初始化函数Public Function InitCommonControlsVB() As Boolean
    On Error Resume Next
    Dim iccex As tagInitCommonControlsExWith iccex.lngSize = LenB(iccex).lngICC = ICC_USEREX_CLASSESEnd WithInitCommonControlsEx iccexInitCommonControlsVB = (Err.Number = 0)On Error GoTo 0End FunctionSub Main()                  '需要设置以此为启动函数InitCommonControlsVB    '调用初始化函数Form1.ShowEnd Sub

    编译后运行可以看到基础控件、Microsoft Windows Common Controls 5.0控件(6.0不行,下图右侧是6.0控件)都变成XP/Win7风格(我是在Win7下测试的,XP没看到)

IDE界面

修改后运行界面

2,资源(.RES)方法,即把上面的.manifest文件作为资源参与编译。要点:

  • 资源类型必须是24,标识号为1,自定义无法添加(类型会有""号),所以需要使用资源编译工具。
  • .manifest文件长度必须可被4整除(可以在文本末加空格凑数)。

在.manifest目录中,新建一个文本文件,内容为

1 24 App.exe.manifest

保存后将文件改名为xp.rc,然后在命令提示符下进入VB安装目录的Wizard目录(如C:\Program Files\Microsoft Visual Studio\VB98\Wizards),在提示符处输入下行命令:

rc /r 文件所在路径\xp.rc

这样,资源文件xp.res就编译好了,这个资源可以在任意工程中使用,不需要另外的处理。

3,使用工具eXeScope。打开eXeScope,选择文件->打开,打开你的程序。再选择编辑->XP样式,在对话框中确定即可。

这里是自动保存的,所以需要的话请事先备份。

4,未证实的问题:

  • Form_Initialize不太保险,最好还是用Sub Main()
  • 即便是使用eXeScope,也需要对程序进行处理如下(按照方法二推论,实际是不需要这个处理的)
    API声明:
    Private Declare Function InitCommonControls Lib "Comctl32.dll" () As Long

    在每个窗体的初始化添加红色代码:

    Private Sub Form_Initialize() 
       InitCommonControls 
    End Sub
    在主窗口结束处添加代码,没有这些代码,程序结束后可能提示错误。
    Private Sub Form_Unload(Cancel As Integer) 
    On Error Resume Next
       End
    End Sub
  • WinXP和Win7的manifest有区别

VB6程序实现XP或者WIN7风格相关推荐

  1. 用VS2012或VS2013在win7下编写的程序在XP下运行就出现“不是有效的win32应用程序

    问题描述: 用VC2013编译了一个程序,在Windows 8.Windows 7(64位.32位)下都能正常运行.但在Win XP,Win2003下运行时,却报错不能运行,具体错误信息为" ...

  2. [置顶] Windows服务(Windows Service,system权限)程序显示界面与用户交互(xp,win7通用)

    [置顶] [置顶] Windows服务(Windows Service,system权限)程序显示界面与用户交互(xp,win7通用) 2012-08-20 15:04 673人阅读 评论(1) 收藏 ...

  3. 让用VS2012/VS2013编写的程序在XP中顺利运行

    转自:http://blog.csdn.net/asanscape/article/details/38752655/ 微软为了推销自家平台,默认配置下VS2012和VS2013编写的应用程序只能在V ...

  4. 如何自动修复XP/VISTA/WIN7系统引导的工具(NTBootAutofix 2.02)

    如何自动修复XP/VISTA/WIN7系统引导的工具(NTBootAutofix 2.02) NTBootAutofix:一款极为优秀的自动修复XP/VISTA/WIN7系统引导的工具 这个工具的用途 ...

  5. VMLite 安装linux系统,VMlite安装XPMode及xp、win7、linux的虚拟磁盘到D盘的方法(15页)-原创力文档...

    PAGE PAGE # 1.安装 windows xp mode 图文 错误! 未疋义书签. 2. 安装ubuntu.xp.win7.等类似图文教程错误!未定义书签. 安装vmlite我就不说了,一直 ...

  6. XP与Win7默认下时间分隔符不同

    用C#做应用开发,做了一个读取access数据库的模块,我的是Win7的系统,access数据库中有一个时间字段,时间是按照 年/月/日 的格式排列的,开始是需要把年的字段取出来,去掉月与日的数据,于 ...

  7. 使用 Windows XP 的外观风格

    目录 简介 ComCtl32.dll 版本 6 外观风格任务 在未使用第三方扩展的应用程序中使用 ComCtl32.dll 版本 6 在使用扩展.插件或进程内运行的 DLL 的应用程序中使用 ComC ...

  8. 海尔轰天雷t7linux转windowxp,XP改win7系统雨林木风详细教程

    最近网友想XP改win7系统雨林木风,看到雨林木风系统这么流行,也想XP升级win7系统了,这个决定是非常正确的,现在主流系统就是windows7系统,那么就让windows7之家小编告诉你们XP改w ...

  9. 安装Xp和Win7双系统方法(图文教程)

    本人正常给同学们装系统,今天就把我装系统的经验心得给大家分享一下,希望多多支持 这里只介绍安装xp和windows7的双系统 定.实用.版本上又不如windows7,所以我而且是xp和win7在不同的 ...

  10. win xp和 win7 的集成版 和 安装方法

    ◇Windows 7 & XP SP3 2in1 集成安装版 201008◇ 写在前面: 1.目前,甚至是接下来好长一段时间,XP和WIN7将是最主流的系统,加上目前DVD-ROM已经基本取代 ...

最新文章

  1. objdump查看目标文件构成
  2. jquery serialize()无效读取不到数据
  3. [C++] C++风格的强制类型转换探讨
  4. PHP7 JIT 相关开源项目(JPHP)
  5. es6学习笔记-module_v1.0_byKL
  6. python 声明变量类型_python基础学习03数据类型和变量
  7. 计算机网络中的传输协议是_计算机网络中的传输方式
  8. 释放囚犯(洛谷-P1622)
  9. python小例子-Python 常用小例子
  10. Real Vision CEO预测以太坊币价将在今年年初达到2万美元
  11. PyTorch中为什么需要使用squeeze()和unsqueeze()操作?
  12. 微信朋友圈图片处理策略
  13. java二重积分_《University Calculus》-chaper13-多重积分-二重积分的计算
  14. 3GPP TS 23501-g51 中英文对照 | 5.3.1 General
  15. 5G手机的未来战事,谁抢先手?
  16. 点评国内SNS网站-转帖
  17. 2022-2-27 Leetcode 123.买卖股票的最 佳时机 III
  18. Linux mount/unmount命令(转)
  19. 【批处理DOS-CMD命令-汇总和小结】-将文件夹映射成虚拟磁盘——subst
  20. Deep Learning学习 之 卷积神经网络(文字识别系统LeNet-5)

热门文章

  1. AS中XML注释和取消注释快捷键,实际操作真实有效!!!
  2. 《复变函数论》试题库及答案
  3. torch.utils.data.Dataset用法
  4. C++小游戏——坦克大战
  5. 电信光猫DDNS的设置经历
  6. 微型计算机如何开声音,MP3声控录音机
  7. Vue移动端项目模板h5
  8. idea 如何查看jdk源码
  9. GMP与ISO9000有何区别?(转载)
  10. 东芝打印机共享怎么设置_东芝2303am网络打印设置教程