Функция _GUICtrlTreeView_HitTest

 ↑  ←  Описание функции


_GUICtrlTreeView_HitTest

Возвращает информацию о пункте находящегося в указанных координатах относительно TreeView

#include <GuiTreeView.au3>
_GUICtrlTreeView_HitTest($hWnd, $iX, $iY)

Параметры

$hWnd Дескриптор или идентификатор элемента
$iX X-координата относительно TreeView, для теста
$iY Y-координата относительно TreeView, для теста

Возвращаемое значение

Успех:Значение, указывающее результат:
1 - В клиентской области, но ниже последнего пункта.
2 - На иконке пункта
4 - На тексте пункта
8 - В отступах пункта
16 - На кнопке развернуть/свернуть пункт
32 - В области справа от пункта
64 - На иконке состояния
128 - Выше клиентской области
256 - Ниже клиентской области
512 - Справа от клиентской области
1024 - Слева от клиентской области
Ошибка:Возвращает 0

См. также

_GUICtrlTreeView_HitTestItem, _GUICtrlTreeView_HitTestEx

Пример

#include <GUIConstantsEx.au3>
#include <GuiTreeView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>

$Debug_TV = False ; Проверяет ClassName передаваемый в функции. Установите True и используйте дескриптор от другого элемента, чтобы увидеть как это работает

Global $hImage, $hStateImage

_Main()

Func _Main()

    Local $hItem[10], $hChildItem[20], $iYItem = 0, $hTreeView, $CursorInfo
    Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS)

    GUICreate("Тест области нажатия", 400, 300)

    $hTreeView = GUICtrlCreateTreeView(2, 2, 396, 268, $iStyle, $WS_EX_CLIENTEDGE)
    GUISetState()

    _CreateNormalImageList()
    _GUICtrlTreeView_SetNormalImageList($hTreeView, $hImage)

    _CreateStateImageList()
    _GUICtrlTreeView_SetStateImageList($hTreeView, $hStateImage)

    _GUICtrlTreeView_BeginUpdate($hTreeView)
    For $x = 0 To 9
        $hItem[$x] = _GUICtrlTreeView_Add($hTreeView, 0, StringFormat("[%02d] Пункт", $x), 4, 5)
        _GUICtrlTreeView_SetStateImageIndex($hTreeView, $hItem[$x], 1)
        For $y = 1 To 2
            $hChildItem[$iYItem] = _GUICtrlTreeView_AddChild($hTreeView, $hItem[$x], StringFormat("[%02d] Дочерний", $y), 0, 3)
            _GUICtrlTreeView_SetStateImageIndex($hTreeView, $hChildItem[$iYItem], 1)
            $iYItem += 1
        Next
    Next
    _GUICtrlTreeView_EndUpdate($hTreeView)

    _GUICtrlTreeView_SelectItem($hTreeView, $hItem[0])
    _GUICtrlTreeView_SetStateImageIndex($hTreeView, $hItem[0], 2)

    ; Цикл выполняется, пока окно не будет закрыто
    Do
        $CursorInfo = GUIGetCursorInfo()
        If @error Then
            ToolTip('')
        Else
            $CursorInfo[0] -=2
            $CursorInfo[1] -=2
            ToolTip('x=' & $CursorInfo[0] & ', y=' & $CursorInfo[1] & ', ' & _GetHitString(_GUICtrlTreeView_HitTest($hTreeView, $CursorInfo[0], $CursorInfo[1])))
        EndIf
        Sleep(10)
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
EndFunc   ;==>_Main

Func _GetHitString($iResult)
    Switch $iResult
        Case 1
            Return "В клиентской области, но ниже последнего пункта"
        Case 2
            Return "На иконке пункта"
        Case 4
            Return "На тексте пункта"
        Case 8
            Return "В отступах пункта"
        Case 16
            Return "На кнопке развернуть/свернуть пункт"
        Case 32
            Return "В области справа от пункта"
        Case 64
            Return "На иконке состояния"
        Case 128
            Return "Выше клиентской области"
        Case 256
            Return "Ниже клиентской области"
        Case 512
            Return "Справа от клиентской области"
        Case 1024
            Return "Слева от клиентской области"
    EndSwitch
EndFunc   ;==>_GetHitString

Func _CreateNormalImageList()
    $hImage = _GUIImageList_Create(16, 16, 5, 3)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 110)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 131)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 165)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 168)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 137)
    _GUIImageList_AddIcon($hImage, "shell32.dll", 146)
EndFunc   ;==>_CreateNormalImageList

Func _CreateStateImageList()
    $hStateImage = _GUIImageList_Create(16, 16, 5, 3)
    _GUIImageList_AddIcon($hStateImage, "shell32.dll", 3)
    _GUIImageList_AddIcon($hStateImage, "shell32.dll", 4)
EndFunc   ;==>_CreateStateImageList