_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