VB6编程实现XP风格

来源:互联网 发布:2015网络剧 编辑:程序博客网 时间:2024/06/05 20:16
 

VB6编程实现XP风格

 

Windows XP系统后,网上就开始讨论VB6编程实现XP风格。我在编写《股票管理大师》时,在网上收集整理了两种方法。

 

第一种方法是用manifest文件实现XP风格

 

VB6开发的应用程序在Windows XP系统中运行时,只有窗口标题条具备XP风格,窗体上的按钮、文本框等控件仍然显示Windows传统风格。如下图所示:


应用程序是通过一个XML资源文件来通知系统加载具备XP风格的组件。

XML文件的内容如下:

<?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>

下面用一个具体例子来说明用此法实现的具体步骤。

1、新建一个VB工程,将工程名称改为:“VB实现XP风格”,启动对象改为:“Sub Main”,将原来的窗体Form1的名称改为“FormVB_XP”。

将上述XML文件内容保存为文件名为“VB实现XP风格.exe.manifest”的文本文件,并将其保存在最终编译出的“VB实现XP风格.exe”文件相同的目录下。

2、添加一个模块,在该模块中输入如下代码:

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)

.lngICC = ICC_USEREX_CLASSES

End With

InitCommonControlsEx iccex

InitCommonControlsVB = (Err.Number = 0)

On Error GoTo 0

End Function

Sub Main()

InitCommonControlsVB    ‘调用初始化函数

FormVB_XP.Show

End Sub

注意初始化动作必须在所有窗体加载前完成。至此,你编译后的VB实现XP风格.exe将具备XP风格,如下图所示:


用这种方法实现XP风格存在如下不足:

1、你的应用程序总有一个manifest文件如影随形,如果这个manifest文件被破坏,XP风格也就不能实现了,VB应用程序当即原形毕露。

2、每次建立新的VB工程时,总不能忘记按照上述步骤去认真地完成,需要写一段也不算长的代码,而且必须在所有窗体调用前就调用初始化函数。

 

第二种方法是用资源文件实现XP风格

 

用资源文件实现XP风格是将manifest文件编译到资源文件中,这就克服了用上述方法的两个不足之处。采用这种方法实现XP风格简单可行,不需要写代码,只需要事先准备好一个资源文件,而且可以永久性地使用,也就是说,准备好这个资源文件后,今后新建VB工程时,只要把此资源文件添加进去即可。

 

因此,准备这个资源文件就是本方法的关键,具体步骤是:

 

1、将XML文件内容保存为文件名为:“abc.exe.manifest”。

其中的abc.exe可以随意更改,但需要注意的是,保存后要看看其文件长度,其总字节数必须能够被4整除,如果不是,你可以在文件尾加空格。

2、在abc.exe.manifest文件的相同目录下新建一个文本文件,输入如下内容:

1 24 abc.exe.manifest

保存后将文件改名为xp.rc

3、在DOS下进入VB安装目录的Wizard目录(如C:\Program Files\Microsoft Visual Studio\VB98\Wizards),在提示符处输入下行命令:

 

rc /r d:\vbxp\xp.rc

 

假设这个xp.rc文件保存的D盘的vbxp目录下。

 

这样,资源文件xp.res就编译好了。这个编译好的资源文件在我的资源中有下载。

 

最后说一下需要注意的地方。在Frame内的单选按钮运行后显示为黑色,解决方法是把它们先放入一个PictureBox内,并设置PictureBoxBorderStyle属性为2-None,然后再连同PictureBox一起剪切到一个Frame中。