Functions > Window >


WinGetCaretPos

Obtient les coordonnées du curseur dans l'avant plan de la fenêtre.

WinGetCaretPos ( )

Valeur de retour

Succès: Retourne un tableau à 2 éléments contenant les informations suivantes:
    [0] = Coordonnée X
    [1] = Coordonnée Y
Échec: Définit @error <> 0.

Remarque

WinGetCaretPos() peut ne pas retourner des valeurs précises pour des applications 'Multiple Document Interface' (MDI) si CaretCoordMode est utilisée avec l'option Absolute. Voir l'exemple pour une solution de contournement. Note: Certaines applications signalent des coordonnées statiques quelle que soit la position du curseur!

En relation

CaretCoordMode (Option)

Exemple

Local $aCaretPos = WinGetCaretPos()
If Not @error Then
    ToolTip("Méthode 1", $aCaretPos[0], $aCaretPos[1])
EndIf
Sleep(2000)

$aCaretPos = _WinGetCaretPos()
If Not @error Then
    ToolTip("Méthode 2", $aCaretPos[0], $aCaretPos[1])
EndIf
Sleep(2000)

; Une méthode plus fiable pour récupérer les coordonnées du curseur dans des éditeurs de texte MDI.
Func _WinGetCaretPos()
    Local $iXAdjust = 5
    Local $iYAdjust = 40

    Local $iOpt = Opt("CaretCoordMode", 0) ; Définit "CaretCoordMode" en mode relatif et stocke l'option précédente.
    Local $aGetCaretPos = WinGetCaretPos() ; Récupére les coordonnées relatives du curseur.
    Local $aGetPos = WinGetPos("[ACTIVE]") ; Récupére la position ainsi que la hauteur et la largeur de la fenêtre active.
    Local $sControl = ControlGetFocus("[ACTIVE]") ; Récupére le nom du contrôle qui a le focus clavier.
    Local $aControlPos = ControlGetPos("[ACTIVE]", "", $sControl) ; Récupére la position ainsi que la taille du contrôle.
    $iOpt = Opt("CaretCoordMode", $iOpt) ; Re-initialise "CaretCoordMode" à l'option précédente.

    Local $aReturn[2] = [0, 0] ; Crée un tableau pour stocker la position x, y.
    If IsArray($aGetCaretPos) And IsArray($aGetPos) And IsArray($aControlPos) Then
        $aReturn[0] = $aGetCaretPos[0] + $aGetPos[0] + $aControlPos[0] + $iXAdjust
        $aReturn[1] = $aGetCaretPos[1] + $aGetPos[1] + $aControlPos[1] + $iYAdjust
        Return $aReturn ;Retour du tableau.
    Else
        Return SetError(1, 0, $aReturn) ; Retourne le tableau et définit @error à 1.
    EndIf
EndFunc   ;==>_WinGetCaretPos