# Function Reference

# _GUICtrlToolbar_Create

Create a Toolbar control

#include <GuiToolbar.au3>
_GUICtrlToolbar_Create ( $hWnd [, $iStyle = $TBSTYLE_FLAT [, $iExStyle = 0x00000000]] )

## Parameters

$hWnd | Handle to parent or owner window
$iStyle | [optional] Control styles: $TBSTYLE_ALTDRAG - Allows users to change a toolbar button's position by dragging it while holding down the ALT key. If this style is not specified, the user must hold down the SHIFT key while dragging a button. Note that the $CCS_ADJUSTABLE style must be specified to enable toolbar buttons to be dragged. $TBSTYLE_CUSTOMERASE - Generates $NM_CUSTOMDRAW messages when the toolbar processes $WM_ERASEBKGND messages $TBSTYLE_FLAT - Creates a flat toolbar (Default) $TBSTYLE_LIST - Creates a flat toolbar with button text to the right of the bitmap $TBSTYLE_REGISTERDROP - Generates $TBN_GETOBJECT notification messages to request drop target objects when the cursor passes over toolbar buttons. $TBSTYLE_TOOLTIPS - Creates a ToolTip control that an application can use to display descriptive text for the buttons in the toolbar. $TBSTYLE_TRANSPARENT - Creates a transparent toolbar. In a transparent toolbar, the toolbar is transparent but the buttons are not. Button text appears under button bitmaps. To prevent repainting problems, this style should be set before the toolbar control becomes visible. $TBSTYLE_WRAPABLE - Creates a toolbar that can have multiple lines of buttons. Toolbar buttons can "wrap" to the next line when the toolbar becomes too narrow to include all buttons on the same line. When the toolbar is wrapped, the break will occur on either the rightmost separator or the rightmost button if there are no separators on the bar. This style must be set to display a vertical toolbar control when the toolbar is part of a vertical rebar control. Default: $TBSTYLE_FLAT Forced: $WS_CHILD, $WS_CLIPSIBLINGS, $WS_VISIBLE
$iExStyle | [optional] Control extended styles: $TBSTYLE_EX_DRAWDDARROWS - Allows buttons to have a separate dropdown arrow. Buttons that have the $BTNS_DROPDOWN style will be drawn with a drop down arrow in a separate section, to the right of the button. If the arrow is clicked, only the arrow portion of the button will depress, and the toolbar control will send a $TBN_DROPDOWN notification to prompt the application to display the dropdown menu. If the main part of the button is clicked, the toolbar control sends a $WM_COMMAND message with the button's ID. $TBSTYLE_EX_HIDECLIPPEDBUTTONS - Hides partially clipped buttons $TBSTYLE_EX_DOUBLEBUFFER - Requires the toolbar to be double buffered $TBSTYLE_EX_MIXEDBUTTONS - Allows you to set text for all buttons, but only display it for the buttons with the $BTNS_SHOWTEXT button style. The $TBSTYLE_LIST style must also be set. Normally, when a button does not display text, you must handle $TBN_GETINFOTIP to display a ToolTip. With the $TBSTYLE_EX_MIXEDBUTTONS extended style, text that is set but not displayed on a button will automatically be used as the button's ToolTip text. You only need to handle $TBN_GETINFOTIP if it needs more flexibility in specifying the ToolTip text.

## Return Value

Success: | the handle to the Toolbar control.
Failure: | 0.

## Related

_GUICtrlToolbar_Destroy

## Example

    #include "Extras\HelpFileInternals.au3"

    #include <GUIConstantsEx.au3>
    #include <GuiToolbar.au3>
    #include <StructureConstants.au3>
    #include <WinAPIConstants.au3>
    #include <WindowsNotifsConstants.au3>
    #include <WindowsStylesConstants.au3>

    Global $g_hToolbar
    Global $g_iItem ; Command identifier of the button associated with the notification.
    Global Enum $e_idNew = 1000, $e_idOpen, $e_idSave, $e_idHelp

    Example()

    Func Example()
        Local $hGUI, $aSize

        ; Create GUI
        $hGUI = GUICreate("Toolbar", 600, 400)
        $g_hToolbar = _GUICtrlToolbar_Create($hGUI)
        $aSize = _GUICtrlToolbar_GetMaxSize($g_hToolbar)

        _MemoCreate(2, $aSize[1] + 20, 596, 396 - ($aSize[1] + 20), $WS_VSCROLL)
        GUISetState(@SW_SHOW)
        GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY")

        ; Add standard system bitmaps
        _GUICtrlToolbar_AddBitmap($g_hToolbar, 1, -1, $IDB_STD_LARGE_COLOR)

        ; Add buttons
        _GUICtrlToolbar_AddButton($g_hToolbar, $e_idNew, $STD_FILENEW)
        _GUICtrlToolbar_AddButton($g_hToolbar, $e_idOpen, $STD_FILEOPEN)
        _GUICtrlToolbar_AddButton($g_hToolbar, $e_idSave, $STD_FILESAVE)
        _GUICtrlToolbar_AddButtonSep($g_hToolbar)
        _GUICtrlToolbar_AddButton($g_hToolbar, $e_idHelp, $STD_HELP)

        ; Loop until the user exits.
        Do
        Until GUIGetMsg() = $GUI_EVENT_CLOSE
    EndFunc   ;==>Example

    ; WM_NOTIFY event handler
    Func _WM_NOTIFY($hWndGUI, $iMsgID, $wParam, $lParam)
        #forceref $hWndGUI, $iMsgID, $wParam
        Local $tNMHDR, $hWndFrom, $iCode, $iNew, $iFlags, $iOld
        Local $tNMTBHOTITEM
        $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
        $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
        $iCode = DllStructGetData($tNMHDR, "Code")
        Switch $hWndFrom
            Case $g_hToolbar
                Switch $iCode
                    Case $NM_LDOWN
                        ;----------------------------------------------------------------------------------------------
                        _MemoWrite("$NM_LDOWN: Clicked Item: " & $g_iItem & " at index: " & _GUICtrlToolbar_CommandToIndex($g_hToolbar, $g_iItem))
                        ;----------------------------------------------------------------------------------------------
                    Case $TBN_HOTITEMCHANGE
                        $tNMTBHOTITEM = DllStructCreate($tagNMTBHOTITEM, $lParam)
                        $iOld = DllStructGetData($tNMTBHOTITEM, "idOld")
                        $iNew = DllStructGetData($tNMTBHOTITEM, "idNew")
                        $g_iItem = $iNew
                        $iFlags = DllStructGetData($tNMTBHOTITEM, "dwFlags")
                        If BitAND($iFlags, $HICF_LEAVING) = $HICF_LEAVING Then
                            _MemoWrite("$HICF_LEAVING: " & $iOld)
                        Else
                            Switch $iNew
                                Case $e_idNew
                                    ;----------------------------------------------------------------------------------------------
                                    _MemoWrite("$TBN_HOTITEMCHANGE: $e_idNew")
                                    ;----------------------------------------------------------------------------------------------
                                Case $e_idOpen
                                    ;----------------------------------------------------------------------------------------------
                                    _MemoWrite("$TBN_HOTITEMCHANGE: $e_idOpen")
                                    ;----------------------------------------------------------------------------------------------
                                Case $e_idSave
                                    ;----------------------------------------------------------------------------------------------
                                    _MemoWrite("$TBN_HOTITEMCHANGE: $e_idSave")
                                    ;----------------------------------------------------------------------------------------------
                                Case $e_idHelp
                                    ;----------------------------------------------------------------------------------------------
                                    _MemoWrite("$TBN_HOTITEMCHANGE: $idHelp")
                                    ;----------------------------------------------------------------------------------------------
                            EndSwitch
                        EndIf
                EndSwitch
        EndSwitch
        Return $GUI_RUNDEFMSG
    EndFunc   ;==>_WM_NOTIFY