_GUICtrlTab_HitTest
Определяет, какая часть элемента Tab находится в указанных координатах
#include <GuiTab.au3>
_GUICtrlTab_HitTest($hWnd, $iX, $iY)
Параметры
$hWnd | Дескриптор или идентификатор элемента |
$iX |
X-координата относительно клиентской области Tab |
$iY |
Y-координата относительно клиентской области Tab |
Возвращаемое значение
Успех: Возвращает массив следующего формата:Пример
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <GuiTab.au3>
$Debug_TAB = False ; Проверяет ClassName передаваемый в функции. Установите True и используйте дескриптор от другого элемента, чтобы увидеть как это работает
_Main()
Func _Main()
Local $hGUI, $aHit, $iTab, $hTab, $aPos, $hImage
; Создаёт GUI
$hGUI = GUICreate("HitTest элемента Tab", 400, 300)
$iTab = GUICtrlCreateTab(2, 2, 396, 296)
$hTab = GUICtrlGetHandle(-1)
GUISetState()
; Вставляет вкладки
_GUICtrlTab_InsertItem($hTab, 0, "Вкладка 1")
_GUICtrlTab_InsertItem($hTab, 1, "Вкладка 2")
_GUICtrlTab_InsertItem($hTab, 2, "Вкладка 3")
; Создаёт список изображений
$hImage = _GUIImageList_Create(16, 16, 5, 3)
_GUIImageList_AddIcon($hImage, "shell32.dll", 4)
_GUICtrlTab_SetImageList($hTab, $hImage)
; Устанавливает изображение на вкладку
_GUICtrlTab_SetItemImage($hTab, 1, 0)
; Цикл выполняется, пока окно не будет закрыто
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_MOUSEMOVE
$aPos = _GetCursorClientPos($hTab) ; Получает клиентские координаты курсора
$aHit = _GUICtrlTab_HitTest($hTab, $aPos[0], $aPos[1])
ToolTip('[0]= ' & $aHit[0] & @CRLF & '[1]= ' & $aHit[1])
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
GUIDelete()
EndFunc ;==>_Main
Func _GetCursorClientPos($hWnd)
Local $aPos = MouseGetPos() ; Получает абсолютные координаты
Local $tPoint = DllStructCreate("int X;int Y") ; Создаёт структуру
; Вставляет координаты
DllStructSetData($tPoint, "X", $aPos[0])
DllStructSetData($tPoint, "Y", $aPos[1])
_WinAPI_ScreenToClient($hWnd, $tPoint) ; Преобразовывает в клиентские
; Извлекает из структуры
$aPos[0] = DllStructGetData($tPoint, "X")
$aPos[1] = DllStructGetData($tPoint, "Y")
Return $aPos
EndFunc ;==>_GetCursorClientPos