VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - Office或IE4风格的ToolBar
发表评论(0)作者:, 平台:, 阅读:10627, 日期:2000-03-12
Office或IE4风格的ToolBar

用API 可以轻松改变 ToolBar 的风格。需要 4.70 或其以上版本的 comctl32.

dll 支持。

声明:

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (

ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal

lParam As Any) As Long

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA"

(ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal

lpsz2 As String) As Long

Private Const WM_USER = &H400

Private Const TB_SETSTYLE = WM_USER + 56

Private Const TB_GETSTYLE = WM_USER + 57

Private Const TBSTYLE_FLAT = &H800

Private Const TBSTYLE_LIST = &H1000

函数:

' tlbToolbarStyle :

'1 为 Office97 风格

'2 为 IE4 风格

Public Sub ToolbarStyle(tlb As Toolbar, tlbToolbarStyle As Long)

Dim lngStyle As Long

Dim lngResult As Long

Dim lngHWND As Long

' Find child window and get style bits

lngHWND = FindWindowEx(tlb.hwnd, 0&, "ToolbarWindow32", vbNullString)

lngStyle = SendMessage(lngHWND, TB_GETSTYLE, 0&, 0&)

' Use a case statement to get the effect

Select Case tlbToolbarStyle

Case 1:

' Creates an Office 97 like toolbar

lngStyle = lngStyle Or TBSTYLE_FLAT

Case 2:

' Creates an Explorer 4.0 like toolbar,

' with text to the right

' of the picture. You must provide text

' in order to get the effect.

lngStyle = lngStyle Or TBSTYLE_FLAT Or TBSTYLE_LIST

Case Else

lngStyle = lngStyle Or TBSTYLE_FLAT

End Select

' Use the API call to change the toolbar

lngResult = SendMessage(lngHWND, TB_SETSTYLE, 0, lngStyle)

 

' Show the effects

tlb.Refresh

End Sub

在 Form 装入时调用:

Private Sub Form_Load()

Call ToolbarStyle(Me.Toolbar1, 2)

' …

End Sub

关于ToolBar 风格的说明:

Office 风格的 Toolbar 是指在鼠标移动到 ICON 后,会出现边框。如我们在

VB5 中用的一样。而comctl的ToolBar是没有该效果的。

IE4 风格的 Toolbar 可以在ICON 下面出现文字,如同 IE4 中的Toolbar 一

样。(可能是反一下…… )