ウィンドウ内のキャレットの位置を返します。
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