函数参考


WinGetCaretPos

返回顶层窗口的插入符的坐标位置.

WinGetCaretPos ( )

参数

None.

返回值

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

注意/说明

若设置了 CaretCoordMode 使用绝对位置则 WinGetCaretPos 对那些具有多文档界面(MDI)的应用程序获得的坐标值可能是不准确的.请参考下面的示例.注意:有些程序可能会无论光标实际位置在哪都只会返回某固定数值!

相关

CaretCoordMode (Option)

示例/演示


Local $aCaretPos = WinGetCaretPos()
If Not @error Then
    ToolTip("第一个种方式", $aCaretPos[0], $aCaretPos[1])
EndIf
Sleep(2000)

$aCaretPos = _WinGetCaretPos()
If Not @error Then
    ToolTip("第二种方式", $aCaretPos[0], $aCaretPos[1])
EndIf
Sleep(2000)

; 得到 MDI 文本编辑器的一些可靠方法.
Func _WinGetCaretPos()
    Local $iXAdjust = 5
    Local $iYAdjust = 40

    Local $iOpt = Opt("CaretCoordMode", 0)         ;相对模式
    Local $aGetCaretPos = WinGetCaretPos()         ;相对插入符坐标
    Local $aGetPos = WinGetPos("[ACTIVE]")         ;窗口坐标
    Local $sControl = ControlGetFocus("[ACTIVE]")  ;文本区域 "句柄"
    Local $aControlPos = ControlGetPos("[ACTIVE]", "", $sControl)  ;文本区域坐标
    $iOpt = Opt("CaretCoordMode", $iOpt) ; Reset "CaretCoordMode" to the previous option.

    Local $aReturn[2] = [0, 0] ; Create an array to store the x, y position.
    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 ; Return the array.
    Else
        Return SetError(1, 0, $aReturn) ; Return the array and set @error to 1.
    EndIf
EndFunc   ;==>_WinGetCaretPos