检索测试点位置相对于控件的信息,返回结果代码.
#include <GuiTreeView.au3>
_GUICtrlTreeView_HitTest($hWnd, $iX, $iY)
$hWnd | 控件ID/句柄 |
$iX | 测试点相对于控件的 X 位置 |
$iY | 测试点相对于控件的 Y 位置 |
成功: | 命中测试结果值: |
1 - 在客户区末项的下面. | |
2 - 位于项目位图 | |
4 - 位于项目文本 | |
8 - 位于项目缩进 | |
16 - 位于项目按钮 | |
32 - 位于项目右边 | |
64 - 位于项目用户自定义状态图标 | |
128 - 位于客户区上方 | |
256 - 位于客户区下方 | |
512 - 位于客户区左边 | |
1024 - 位于客户区右边 | |
失败: | 返回 0 |
#include <GUIConstantsEx.au3>
#include <GuiTreeView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
$Debug_TV = False ; 检查传递给函数的类名, 设置为True并输出到一个控件的句柄,用于检查它是否工作
Global $hImage, $hStateImage
_Main()
Func _Main()
Local $hItem[10], $hChildItem[30], $iYItem = 0, $iYRand, $iXRand, $hTreeView
Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS)
GUICreate("TreeView Hit Test", 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] New Item", $x), 4, 5)
_GUICtrlTreeView_SetStateImageIndex($hTreeView, $hItem[$x], 1)
For $y = 1 To 3
$hChildItem[$iYItem] = _GUICtrlTreeView_AddChild($hTreeView, $hItem[$x], StringFormat("[%02d] New Child", $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)
$iYRand = Random(0, 268, 1)
$iXRand = Random(0, 396, 1)
MsgBox(4160, "信息", StringFormat("Hit Test (%d, %d): %s", $iXRand, $iYRand, _GetHitString(_GUICtrlTreeView_HitTest($hTreeView, $iXRand, $iYRand))))
; 循环直到用户退出
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main
Func _GetHitString($iResult)
Switch $iResult
Case 1
Return "In the client area, but below the last item"
Case 2
Return "On the bitmap associated with an item"
Case 4
Return "On the text associated with an item"
Case 8
Return "In the indentation associated with an item"
Case 16
Return "On the button associated with an item"
Case 32
Return "In the area to the right of an item"
Case 64
Return "On the state icon for a item that is in a user-defined state"
Case 128
Return "Above the client area"
Case 256
Return "Below the client area"
Case 512
Return "To the left of the client area"
Case 1024
Return "To the right of the client area"
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