#Include <GUIConstantsEx.au3>
#Include <GUIImageList.au3>
#Include <GUIToolbar.au3>
#Include <StaticConstants.au3>
#Include <ToolbarConstants.au3>
#Include <WindowsConstants.au3>
#Include <WinAPIEx.au3>
$hForm = GUICreate('MyGUI', 332, 332)
$hTool = GUICreate('', 332, 64, 0, 0, $WS_CHILD, 0, $hForm)
$Dummy = GUICtrlCreateDummy()
$hToolbar = _GUICtrlToolbar_Create($hTool, BitOR($BTNS_BUTTON, $BTNS_SHOWTEXT, $TBSTYLE_FLAT, $TBSTYLE_TOOLTIPS), $TBSTYLE_EX_DOUBLEBUFFER)
$hImageList = _GUIImageList_Create(32, 32, 5, 1, 5)
Dim $Icon[5] = [19, 205, 298, 300, 304]
For $i = 0 To 4
$hIcon = _WinAPI_ShellExtractIcon(@SystemDir & '\shell32.dll', $Icon[$i], 32, 32)
_GUIImageList_ReplaceIcon($hImageList, -1, $hIcon)
_WinAPI_DestroyIcon($hIcon)
Next
_GUICtrlToolbar_SetImageList($hToolbar, $hImageList)
_GUICtrlToolbar_AddString($hToolbar, 'Button 1')
_GUICtrlToolbar_AddString($hToolbar, 'Button 2')
_GUICtrlToolbar_AddString($hToolbar, 'Button 3')
_GUICtrlToolbar_AddString($hToolbar, 'Button 4')
_GUICtrlToolbar_AddString($hToolbar, 'Button 5')
_GUICtrlToolbar_AddButton($hToolbar, 10000, 0, 0)
_GUICtrlToolbar_AddButton($hToolbar, 10001, 1, 1)
_GUICtrlToolbar_AddButtonSep($hToolbar, 5)
_GUICtrlToolbar_AddButton($hToolbar, 10002, 2, 2)
_GUICtrlToolbar_AddButton($hToolbar, 10003, 3, 3)
_GUICtrlToolbar_AddButton($hToolbar, 10004, 4, 4)
_GUICtrlToolbar_SetButtonSize($hToolbar, 64, 64)
_GUICtrlToolbar_SetMetrics($hToolbar, 0, 0, 1, 0)
_GUICtrlToolbar_SetIndent($hToolbar, 1)
_SendMessage($hToolbar, $TB_AUTOSIZE)
GUISwitch($hForm)
GUICtrlCreateLabel('', 0, 64, 335, 2, $SS_ETCHEDHORZ)
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')
GUISetState(@SW_SHOWNOACTIVATE, $hTool)
GUISetState(@SW_SHOW, $hForm)
While 1
Switch GUIGetMsg()
Case 0
ContinueLoop
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Dummy
$ID = GUICtrlRead($Dummy)
Switch $ID
Case 10000
MsgBox(64, 'Toolbar', 'Button 1 has been pressed!', 0, $hForm)
Case 10001
MsgBox(64, 'Toolbar', 'Button 2 has been pressed!', 0, $hForm)
Case 10002
MsgBox(64, 'Toolbar', 'Button 3 has been pressed!', 0, $hForm)
Case 10003
MsgBox(64, 'Toolbar', 'Button 4 has been pressed!', 0, $hForm)
Case 10004
MsgBox(64, 'Toolbar', 'Button 5 has been pressed!', 0, $hForm)
Case Else
EndSwitch
EndSwitch
WEnd
Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
Local $ID = BitAND($wParam, 0xFFFF)
Switch $hWnd
Case $hTool
Switch $ID
Case 10000 To 10004
GUICtrlSendToDummy($Dummy, $ID)
Case Else
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
Local $tNMIA = DllStructCreate($tagNMITEMACTIVATE, $lParam)
Local $hTarget = DllStructGetData($tNMIA, 'hWndFrom')
Local $ID = DllStructGetData($tNMIA, 'Code')
Switch $hWnd
Case $hTool
Switch $hTarget
Case $hToolbar
Switch $ID
Case $TBN_GETINFOTIPW
Local $tNMTBGIT = DllStructCreate($tagNMHDR & ';ptr Text;int TextMax;int Item;lparam lParam;', $lParam)
Local $Item = DllStructGetData($tNMTBGIT, 'Item')
Local $Text = ''
Switch $Item
Case 10000
$Text = 'Tooltip 1'
Case 10001
$Text = 'Tooltip 2'
Case 10002
$Text = 'Tooltip 3'
Case 10003
$Text = 'Tooltip 4'
Case 10004
$Text = 'Tooltip 5'
Case Else
EndSwitch
If $Text Then
DllStructSetData(DllStructCreate('wchar[' & DllStructGetData($tNMTBGIT, 'TextMax') & ']', DllStructGetData($tNMTBGIT, 'Text')), 1, $Text)
EndIf
EndSwitch
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc