|
楼主 |
发表于 2009-5-5 16:13
|
显示全部楼层
第8部分 控件与用户窗体
技巧135 用户窗体添加图标
用户窗体在显示时标题栏上是没有图标的,如果希望在窗体上添加图标,可以借助API函数在窗体显示时添加自定义的图标。
在VBE窗口中单击菜单“插入”→“用户窗体”,插入一个窗体,在窗体中添加一个Image控件,设置Image控件Picture属性为自定义图标的位图,并将Image控件的Visible属性设置为False,使窗体运行时隐藏Image控件,如图所示。
在VBE中双击窗体,写入下面的代码。- #001 Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
- #002 Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
- #003 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
- #004 Private Const WM_SETICON = &H80
- #005 Private Const ICON_SMALL = 0&
- #006 Private Const ICON_BIG = 1&
- #007 Sub ChangeIcon(ByVal hWnd As Long, Optional ByVal hicon As Long = 0&)
- #008 SendMessage hWnd, WM_SETICON, ICON_SMALL, ByVal hicon
- #009 SendMessage hWnd, WM_SETICON, ICON_BIG, ByVal hicon
- #010 DrawMenuBar hWnd
- #011 End Sub
- #012 Private Sub UserForm_Initialize()
- #013 Dim hWnd As Long
- #014 hWnd = FindWindow(vbNullString, Me.Caption)
- #015 Call ChangeIcon(hWnd, Image1.Picture.Handle)
- #016 End Sub
复制代码 代码解析:
窗体的初始化事件,窗体在显示时运行ChangeIcon函数,在标题栏中添加图标。
第1行到第6行代码, API函数声明。
第7行到第11行代码,ChangeIcon过程,用于转换图标。
第14行代码,获得窗口句柄。
第15行代码,运行ChangeIcon过程,将Image控件中的位图显示在窗体的标题栏上。
运行窗体后,在窗体标题栏上添加图标,如图所示。
|
|