VB6程序实现XP或者WIN7风格

本文介绍如何在VB6中启用XP风格界面的方法,包括使用Manifest文件、资源文件、工具eXeScope等方式,并提供了实践代码及注意事项。

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

1,Manifest方法,即通过Microsoft Windows Common Controls 的DLL文件Comctl32.dll(版本6)来加载具备XP风格的组件。这个dll和ocx的版本6不同。下面其它方法也都是以此为基础的。

  •       用文本编辑器编写一个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">
    <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>

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

  • 在启动窗体代码中加入窗口初始化代码。

  • Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
    
    Private Sub Form_Initialize()
    	InitCommonControls
    End Sub
  • 或者在模块中加入类似代码,并把启动过程设置为Sub Main(),上面的简单,下面的复杂,两个实测都可用。

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

  • Private Declare Function InitCommonControlsEx Lib "comctl32.dll" _
        (iccex As tagInitCommonControlsEx) As Boolean
    
    Private Type tagInitCommonControlsEx
        lngSize As Long
        lngICC As Long
    End Type
    
    Private Const ICC_USEREX_CLASSES = &H200
    
    'VB实现XP风格的初始化函数
    
    Public Function InitCommonControlsVB() As Boolean
    On Error Resume Next
    Dim iccex As tagInitCommonControlsEx
    
        With iccex
            .lngSize = LenB(iccex)
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值