Funktionreferenz


_GUIToolTip_HitTest

Beschreibung anzeigen in

Ermittelt über die Informationen, die ein ToolTip-Control über ein Tool enthält, ob sich ein Koordinatenpunkt innerhalb des Tooltip-Rechtecks befindet

#include <GuiToolTip.au3>
_GUIToolTip_HitTest ( $hTool, $hWnd, $iX, $iY )

Parameter

$hTool Handle des Controls (welches von _GUIToolTip_Create zurückgegeben wird.)
$hWnd Handle zum Fenster welches das Tool enthält
$iX zu testende X-Position
$iY zu testende Y-Position

Rückgabewert

Erfolg: ein Array mit dem folgende Format:
[0] – Flags, die die Anzeige von Tooltips steuern. Dieses Mitglied kann eine Kombination der folgenden Werte sein:
  $TTF_IDISHWND = Zeigt an, dass $iID ist das Fenster Handle des Tools anstatt der ID
  $TTF_CENTERTIP = Zentriert das Fenster, zugehörig zu dem durch $iID festgelegten Tool
  $TTF_RTLREADING = Zeigt an, dass der Text in umgekehrter Richtung angezeigt werden soll
  $TTF_SUBCLASS - Zeigt an, dass das Control das Fenster des Tool unterklassifizieren soll um Nachrichten abzufangen
  $TTF_TRACK - Positioniert das Control neben dem zugehörigen Tool
  $TTF_ABSOLUTE - Positioniert das Fenster bei den gleichen Koordinaten wie $TTM_TRACKPOSITION
  $TTF_TRANSPARENT - Sorgt dafür, dass das Control die Nachrichten an das Elternfenster weiterleitet
  $TTF_PARSELINKS - Zeigt an, dass Links im Control Text ausgegliedert werden sollen
[1] - Handle zum Fenster welches das Tool enthält ($hWnd)
[2] - ID des Tools ($iID)
[3] - X Koordinate der oberen linken Ecke des Rechtecks
[4] - Y Koordinate der oberen linken Ecke des Rechtecks
[5] - X Koordinate der unteren rechten Ecke des Rechtecks
[6] - Y Koordinate der unteren rechten Ecke des Rechtecks
[7] - Handle zu der Instanz welche die Stringressource für das Tool enthält
[8] - Text für das Tool
[9] - anwendungsspezifischer Wert der mit dem Tool verknüpft ist
Fehler: setzt @error (siehe Bemerkungen)

Bemerkungen

Wenn sich das von $hWnd referenzierte Steuerelement nicht im selben Prozess befindet und beide Prozesse in unterschiedlichen AutoIt-Modi (@AutoItVersion) ausgeführt werden, wird @error auf 6 gesetzt.

Diese Nachricht muss gesendet werden, wenn das Tool das Flag $TTF_TRACK gesetzt hat.
_GUIToolTip_HitTest() schlägt fehl, wenn $TTF_TRACK nicht gesetzt ist, unabhängig davon, ob der "Hit" Punkt sich im Rechteck des Tools befindet oder nicht.

Die Flags können mit _GUIToolTip_BitsToTTF() in eine lesbare Zeichenfolge umgewandelt werden.

- - - - - - - - Erklärung der Controls - - - - - - - -

Verwandte Funktionen

_GUIToolTip_BitsToTTF

Beispiel

Beispiel 1

#include "Extras\HelpFileInternals.au3"

#include <GUIConstantsEx.au3>
#include <GUIToolTip.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIIcons.au3>

Global $g_hToolTip, $g_aPos, $g_hButton

; Press g to display the current tooltip information.
HotKeySet("g", "GetInfo")

Example()

Func Example()
    Local $hGUI = GUICreate("ToolTip Hit Test v(" & @AutoItVersion & ")", 450, 300, 100, 100)

    $g_hToolTip = _GUIToolTip_Create(0, $TTS_CLOSE + $TTS_BALLOON)
    _MemoSetHandleInProcess($g_hToolTip)

    Local $idButton = GUICtrlCreateButton("Button ToolTip", 30, 32, 130, 28)
    $g_hButton = GUICtrlGetHandle($idButton)

;~  $hGUI = 0 ; is OK
    _GUIToolTip_AddTool($g_hToolTip, $hGUI, "X: " & @TAB & " Y: " & @TAB, $g_hButton)

    Local $hIcon = _WinAPI_LoadShell32Icon(15)

    _GUIToolTip_SetTitle($g_hToolTip, 'Title', $hIcon)

    GUISetState(@SW_SHOW)

    ; Show the tooltip associated with the button
    Opt("MouseCoordMode", 2)
    MouseMove(50, 42, 0)
    Sleep(250)

    $g_aPos = MouseGetPos()
    _GUIToolTip_TrackPosition($g_hToolTip, $g_aPos[0] + 10, $g_aPos[1] + 20)
    _GUIToolTip_TrackActivate($g_hToolTip, True, $hGUI, $g_hButton)
    _GUIToolTip_UpdateTipText($g_hToolTip, $hGUI, $g_hButton, "X: " & $g_aPos[0] & " Y: " & $g_aPos[1])

    GetInfo()

    While 1
        Sleep(100)
        $g_aPos = MouseGetPos()
        _GUIToolTip_TrackPosition($g_hToolTip, $g_aPos[0] + 10, $g_aPos[1] + 20)
        _GUIToolTip_UpdateTipText($g_hToolTip, $hGUI, $g_hButton, "X: " & $g_aPos[0] & " Y: " & $g_aPos[1])
        If GUIGetMsg() = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    _MemoResetHandleInProcess($g_hToolTip)
    _GUIToolTip_Destroy($g_hToolTip)
    GUIDelete($hGUI)
EndFunc   ;==>Example

Func GetInfo()
    Local $aTool = _GUIToolTip_HitTest($g_hToolTip, $g_hButton, $g_aPos[0], $g_aPos[1])
    _MemoMsgBox($MB_SYSTEMMODAL, "Tooltip info", "Flags: " & @TAB & _GUIToolTip_BitsToTTF($aTool[0]) & @CRLF & _
            "HWnd: " & @TAB & $aTool[1] & @CRLF & _
            "ID: " & @TAB & "0x" & $aTool[2] & @CRLF & _
            "Left X:" & @TAB & $aTool[3] & @CRLF & _
            "Left Y:" & @TAB & $aTool[4] & @CRLF & _
            "Right X:" & @TAB & $aTool[5] & @CRLF & _
            "Right Y:" & @TAB & $aTool[6] & @CRLF & _
            "Instance:" & @TAB & $aTool[7] & @CRLF & _
            "Text:" & @TAB & $aTool[8] & @CRLF & _
            "lParam:" & @TAB & $aTool[9])
EndFunc   ;==>GetInfo

Example 2 : ToolTip Hit Test to an External process

#include "Extras\HelpFileInternals.au3"

#include <GUIToolTip.au3>

Example()

Func Example()
    Local $sFromTo
    Local $hWin = _MemoRunAU3OutProcess($sFromTo, True) ; OK same mode, KO if different mode
    Local $hButton = _MemoCreateOutProcess($hWin, "Button", 1, $sFromTo)

    Local $hToolTip = _MemoGetHandleInProcess()

    Local $aPos = MouseGetPos()

    Local $aTool = _GUIToolTip_HitTest($hToolTip, $hButton, $aPos[0], $aPos[1])
    If @error Then
        _MemoMsgBox($MB_ICONERROR, "Info" & $sFromTo, "_GUIToolTip_HitTest()" & " @error = " & @error & @CRLF & _
                @TAB & "cannot be accessed from an external process" & @CRLF & _
                @TAB & "running in different mode")
    Else
        ; only working if both processes are running in "same mode"
        _MemoWrite("<<< Tooltip info" & $sFromTo & @CRLF & _
                "Flags: " & @TAB & _GUIToolTip_BitsToTTF($aTool[0]) & @CRLF & _
                "HWnd: " & @TAB & "0x" & Hex($aTool[1]) & @CRLF & _
                "ID: " & @TAB & "0x" & Hex($aTool[2]) & @CRLF & _
                "Left X:" & @TAB & @TAB & $aTool[3] & @CRLF & _
                "Left Y:" & @TAB & @TAB & $aTool[4] & @CRLF & _
                "Right X:" & @TAB & $aTool[5] & @CRLF & _
                "Right Y:" & @TAB & $aTool[6] & @CRLF & _
                "Instance:" & @TAB & $aTool[7] & @CRLF & _
                "Text:" & @TAB & $aTool[8] & @CRLF & _
                "lParam:" & @TAB & $aTool[9])
    EndIf

    _MemoMsgBoxStatus("", Default, $hWin) ; no more action, wait GUI for closing, close also OutProcess GUI

EndFunc   ;==>Example