Function Reference

WinGetCaretPos

ウィンドウ内のキャレットの位置を返します。

WinGetCaretPos ( )

 

パラメータ

なし。

 

返し値

成功 次に示す情報を格納したよう素数2の配列を返します。
$array[0] = X座標
$array[1] = Y座標
失敗 @errorを1に設定します。

 

注意

WinGetCaretPosはCaretCoordModeで1が設定されてる場合、マルチプルドキュメントインターフェイス(MDI)アプリケーションから正確な値を返しません。この問題の回避方法については例を参照してください。注意:アプリケーションによってはキャレット位置ではなくスタティックコントロール位置を返します!

 

関連

CaretCoordMode (Option)

 


$a = WinGetCaretPos()
If Not @error Then ToolTip("First Method Pos", $a[0], $a[1])
sleep(2000)

$b = _CaretPos()
If Not @error Then ToolTip("Second Method Pos", $b[0], $b[1])
sleep(2000)

; より信頼度の高いMDIテキストエディタのキャレット位置取得方法
Func _CaretPos()
    Local $x_adjust =  5
    Local $y_adjust = 40

    Opt("CaretCoordMode", 0)              ;相対モード
    Local $c = WinGetCaretPos()           ;キャレットの相対位置
    Local $w = WinGetPos("")              ;ウィンドウ位置
    Local $f = ControlGetFocus("","")     ;テキスト領域の”ハンドル”
    Local $e = ControlGetPos("", "", $f)  ;テキスト領域位置

    Local $t[2]
    If IsArray($c) and IsArray($w) and IsArray($e) Then
        $t[0] = $c[0] + $w[0] + $e[0] + $x_adjust
        $t[1] = $c[1] + $w[1] + $e[1] + $y_adjust
        Return $t     ;キャレットカーソルのスクリーンに対する絶対座標
    Else
        SetError(1)
    EndIf
EndFunc