VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - Office或IE4风格的ToolBar
发表评论(0)作者:, 平台:, 阅读:14058, 日期: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_FLATEnd 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 一样。(可能是反一下。。。。)