基 础 函 数 参 考


WinGetCaretPos

返回当前窗口插入符的坐标

WinGetCaretPos ( )

参 数

None.

返 回 值

成功: 返回含有下列信息的 2 元素数组:
$array[0] = X 坐标
$array[1] = Y 坐标
失败: 设置 @error 为 1.

备 注

若设置 CaretCoordMode 使用绝对位置, WinGetCaretPos 可能不会返回多文档界面(MDI) 插入符的精确值.
请参考下面的示例. 注意:某些应用程序无视插入符的位置, 仅报告静态坐标!

相 关 函 数

CaretCoordMode (Option)

函 数 示 例


Local $a = WinGetCaretPos()
If Not @error Then ToolTip("第一个定位光标坐标", $a[0], $a[1])
Sleep(2000)

Local $b = _CaretPos()
If Not @error Then ToolTip("第二个定位光标坐标", $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   ;==>_CaretPos

provider with jb51.net (unicode)