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

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

被折叠的 条评论
为什么被折叠?



