Функция _GUICtrlTab_HitTest

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


_GUICtrlTab_HitTest

Определяет, какая часть элемента Tab находится в указанных координатах

#include <GuiTab.au3>
_GUICtrlTab_HitTest($hWnd, $iX, $iY)

Параметры

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

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

Успех: Возвращает массив следующего формата:
        [0] - Индекс вкладки (отсчёт от 0) или -1, если точка вне язычка вкладки
        [1] - Результаты HitTest:
            1 - Позиция не над язычком вкладки
            2 - Позиция над иконкой вкладки
            4 - Позиция над текстом вкладки

Пример

#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