Option ExplicitPrivate Sub Form_Load() Text1.Text = "abc" End SubPrivate Sub Text2_GotFocus() Text2.SelText = Text1.Text End Sub
'下面这个函数可以获得鼠标在Text中的位置,把所有代码复制到标准模块中就可以调用了。Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongConst EM_GETLINE = &HC4 Const EM_GETLINECOUNT = &HBA Const EM_GETSEL = &HB0 Const EM_LINEFROMCHAR = &HC9 Const EM_LINEINDEX = &HBB Const EM_LINELENGTH = &HC1 Const EM_LINESCROLL = &HB6' 获得文本框中光标的所在位置 ' hwnd 为文本框的句柄, LineNo 为光标所在的行数, ColNo 为光标所在的列数 Sub GetTextCursorPos(ByVal hwnd As Long, ByRef LineNo As Long, ByRef ColNo As Long) Dim i As Long, j As Long, k As Long Dim lParam As Long, wParam As Long i = SendMessage(hwnd, EM_GETSEL, wParam, lParam) j = i / 2 ^ 16 '取得目前光标前面有多少个字节 LineNo = SendMessage(hwnd, EM_LINEFROMCHAR, j, 0) '取得前面有多少行 LineNo = LineNo + 1 k = SendMessage(hwnd, EM_LINEINDEX, -1, 0) '取得目前光标所在行前面有多少个字节 ColNo = j - k + 1 End Sub
Text1.Text = "abc"
End SubPrivate Sub Text2_GotFocus()
Text2.SelText = Text1.Text
End Sub
Const EM_GETLINECOUNT = &HBA
Const EM_GETSEL = &HB0
Const EM_LINEFROMCHAR = &HC9
Const EM_LINEINDEX = &HBB
Const EM_LINELENGTH = &HC1
Const EM_LINESCROLL = &HB6' 获得文本框中光标的所在位置
' hwnd 为文本框的句柄, LineNo 为光标所在的行数, ColNo 为光标所在的列数
Sub GetTextCursorPos(ByVal hwnd As Long, ByRef LineNo As Long, ByRef ColNo As Long)
Dim i As Long, j As Long, k As Long
Dim lParam As Long, wParam As Long
i = SendMessage(hwnd, EM_GETSEL, wParam, lParam)
j = i / 2 ^ 16 '取得目前光标前面有多少个字节
LineNo = SendMessage(hwnd, EM_LINEFROMCHAR, j, 0) '取得前面有多少行
LineNo = LineNo + 1
k = SendMessage(hwnd, EM_LINEINDEX, -1, 0) '取得目前光标所在行前面有多少个字节
ColNo = j - k + 1
End Sub