回答你的第一个问题:
Sub GetCaretPosXY(ByVal TextHwnd As Long, LineNo As Long, ColNo As Long)
Dim I As Long, J As Long
Dim lParam As Long, wParam As Long
Dim K As Long
'首先向文本框传递EM_GETSEL消息以获取从起始位置到
'光标所在位置的字符数
I = SendMessage(TextHwnd, EM_GETSEL, wParam, lParam)
J = I / 2 ^ 16
'再向文本框传递EM_LINEFROMCHAR消息根据获得的字符
'数确定光标以获取所在行数
LineNo = SendMessage(TextHwnd, EM_LINEFROMCHAR, J, 0) '
LineNo = LineNo + 1
'向文本框传递EM_LINEINDEX消息以获取所在列数
K = SendMessage(TextHwnd, EM_LINEINDEX, -1, 0)
ColNo = J - K + 1
End Sub
用法如下:
Dim LineNo As Long, ColNo As Long
Call GetCaretPosXY(Text1.hwnd, LineNo, ColNo)
变量 LineNo 的值就是Text1的行数;
变量 ColNo 的值就是Text1的列数;
然后第二和第三个问题你就自己编了。
第二和第三个问题如用RichTextBox孔件就简单了,