|
'在form中放一个textBox两个label Const EM_GETSEL = &HB0 Const EM_LINEFROMCHAR = &HC9 Const EM_LINEINDEX = &HBB
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Sub GetCaretPos(ByVal hTxt 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 i = SendMessage(hTxt, EM_GETSEL, wParam, lParam) j = i / 2 ^ 16 '取得目前Caret所在前面有多少个byte LineNo = SendMessage(hTxt, EM_LINEFROMCHAR, j, 0) '取得前面有多少行 LineNo = LineNo + 1 k = SendMessage(hTxt, EM_LINEINDEX, -1, 0) '取得目前caret所在行前面有多少个byte ColNo = j - k + 1 End Sub
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) Dim LineNo As Long, ColNo As Long Call GetCaretPos(Text1.hwnd, LineNo, ColNo) Label1.Caption = "第" & LineNo & "行" Label2.Caption = "第" & ColNo & "列" End Sub
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, [1] [2] 下一页
|