首 页IT知识库翔宇问吧收藏本站
当前位置:翔宇亭IT乐园IT知识库编程技术VB/VB.NET

VB编程实现XP风格之终结篇

减小字体 增大字体 作者:不详  来源:转载  发布时间:2010-02-24 22:32:00

  网上讨论编程实现XP风ge已经很久了,但对于VB编程实现XP风ge,却终没有一个完美的解决方案。笔者通过N个日夜的刻苦钻研终于揭开其中奥秘。下面分为三个方面与大家共享之。

点击下载源代码文件

一.用manifest文件实现XP风ge

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



通过查阅MSDN里的Visual Style章节知道,Windows XP通过Comctl32.dll(版本6)来加载具备XP风ge的组件,应用程序则通过一个XML资源文件来通知系统来做这些。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>

假设你最终编译的程序名是abc.exe,工作目录是d:\vbxp。复制上述XML内容并保存为文本文件。然后将该文件改名为abc.exe.manifest(注意.txt扩展名要去掉)。在VB程序中,我们要在所有窗体加载之前调用InitCommonControlsEx函数从comctl32.dll(版本6)中对组件类进行初始化。API函数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
  这里我们编写一个函数封装初始化操作:
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()中,并设置工程从Sub Main()启动。代码如下:

Sub Main()

   InitCommonControlsVB

   Form1.Show

End Sub

至此,你编译后的abc.exe将具备XP风ge,如图2所示:


 

[1] [2]  下一页

Tags:VB XP

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 1分

内 容:

            请注意用语文明且合法,不要发布带有攻击性、侮辱性的言论,谢谢合作!

         通知管理员 验证码:

关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图 | 用户守则 | 联系我们 |
本站大多数内容来自互联网或网站会员发布,如有侵权,请来信告之,谢谢!
Copyright © 2007-2017 biye5u.com. All Rights Reserved.
网站备案号:黑ICP备13005378号-3