# Function Reference

# _GUICtrlHeader_HitTest

Tests a point to determine which item is at the specified point

#include <GuiHeader.au3>
_GUICtrlHeader_HitTest ( $hWnd, $iX, $iY )

## Parameters

$hWnd | Handle to the control
$iX | X position to test
$iY | Y position to text

## Return Value

Returns an array with the following format:
[ 0] - 0-based index of the item at the specified position, or -1 if no item was found
[ 1] - If True, position is in control's client window but not on an item
[ 2] - If True, position is in the control's bounding rectangle
[ 3] - If True, position is on the divider between two items
[ 4] - If True, position is on the divider of an item that has a zero width
[ 5] - If True, position is over the filter area
[ 6] - If True, position is on the filter button
[ 7] - If True, position is above the control's bounding rectangle
[ 8] - If True, position is below the control's bounding rectangle
[ 9] - If True, position is to the right of the control's bounding rectangle
[10] - If True, position is to the left of the control's bounding rectangle

## Example

### Example 1

    #include "Extras\HelpFileInternals.au3"

    #include <GUIConstantsEx.au3>
    #include <GuiHeader.au3>

    Example()

    Func Example()
        ; Create GUI
        Local $hGUI = GUICreate("Header Hit Test (v" & @AutoItVersion & ")", 450, 300, 100, 100)
        Local $hHeader = _GUICtrlHeader_Create($hGUI)
        _MemoCreate(2, 52, 444, 220)

    ;~  _GUICtrlHeader_SetUnicodeFormat($hHeader, True)

        GUISetState(@SW_SHOW)

        ; Add columns
        _GUICtrlHeader_AddItem($hHeader, "Column 0", 100)
        _GUICtrlHeader_AddItem($hHeader, "Column 1", 100)
        _GUICtrlHeader_AddItem($hHeader, "Column 2", 100)
        _GUICtrlHeader_AddItem($hHeader, "Column 3", 100)

        ; Do a hit test on column 1
        Local $aHT = _GUICtrlHeader_HitTest($hHeader, 110, 10)
        _MemoWrite("Item index ...................: " & $aHT[0])
        _MemoWrite("In client window .............: " & $aHT[1])
        _MemoWrite("In control rectangle .........: " & $aHT[2])
        _MemoWrite("On divider ...................: " & $aHT[3])
        _MemoWrite("On zero width divider ........: " & $aHT[4])
        _MemoWrite("Over filter area .............: " & $aHT[5])
        _MemoWrite("Over filter button ...........: " & $aHT[6])
        _MemoWrite("Above bounding rectangle .....: " & $aHT[7])
        _MemoWrite("Below bounding rectangle .....: " & $aHT[8])
        _MemoWrite("To right of bounding rectangle: " & $aHT[9])
        _MemoWrite("To left of bounding rectangle : " & $aHT[10])

        _MemoMsgBoxStatus("", -1, $hGUI) ; no more action, wait GUI for closing

    EndFunc   ;==>Example

### Example 2 : Header Hit Test from an External process

    #include "Extras\HelpFileInternals.au3"

    #include <GuiHeader.au3>

    Example()

    Func Example()
        Local $sFromTo
        Local $hWin = _MemoRunAU3OutProcess($sFromTo) ; OK if run in different Mode

        Local $hHeader = _MemoCreateOutProcess($hWin, "SysHeader32", 0, $sFromTo)

        ; Do a hit test on column 2
        Local $aHT = _GUICtrlHeader_HitTest($hHeader, 250, 10)
        _MemoWrite("Item index ...................: " & $aHT[0])
        _MemoWrite("In client window .............: " & $aHT[1])
        _MemoWrite("In control rectangle .........: " & $aHT[2])
        _MemoWrite("On divider ...................: " & $aHT[3])
        _MemoWrite("On zero width divider ........: " & $aHT[4])
        _MemoWrite("Over filter area .............: " & $aHT[5])
        _MemoWrite("Over filter button ...........: " & $aHT[6])
        _MemoWrite("Above bounding rectangle .....: " & $aHT[7])
        _MemoWrite("Below bounding rectangle .....: " & $aHT[8])
        _MemoWrite("To right of bounding rectangle: " & $aHT[9])
        _MemoWrite("To left of bounding rectangle : " & $aHT[10])

        _MemoMsgBoxStatus("", -1, $hWin) ; no more action, wait GUI for closing

    EndFunc   ;==>Example