Public Sub Get_Line()
Dim lLineCount As Long, lLineIndex As Long, lCurrentByte As Long, i As Long, J As Long
Dim lColNo As Long, lLineLength As Integer
With FrmMain.RichEdit
lLineCount = SendMessage(.hwnd, EM_GETLINECOUNT, ByVal 0&, .SelStart)
lLineIndex = .GetLineFromChar(.SelStart) + 1
lCurrentByte = SendMessage(.hwnd, EM_LINEINDEX, -1, 0) '取得目前光标所在行前面有多少个Byte
lLineLength = SendMessage(.hwnd, EM_LINELENGTH, lCurrentByte, 0) + 1 '取得当前行的长度
i = SendMessage(.hwnd, EM_GETSEL, ByVal 0&, ByVal 0&)
J = i / 65536 '取得目前光标所在位置前有多少个Byte
lColNo = J - lCurrentByte + 1
End With
FrmMain.LbRow.Caption = "行:" & lLineIndex & " / " & lLineCount
FrmMain.LbCol.Caption = "列:" & lColNo & " / " & lLineLength
' With FrmMain.StatusBar1
' .Panels(2) = "行:" & lLineIndex & " / " & lLineCount
' .Panels(3) = "列:" & lColNo & " / " & lLineLength
' End With
End Sub以上代码摘自我自己的一个程序中的一个过程,您自己试试,希望能给您点帮助!
Dim lLineCount As Long, lLineIndex As Long, lCurrentByte As Long, i As Long, J As Long
Dim lColNo As Long, lLineLength As Integer
With FrmMain.RichEdit
lLineCount = SendMessage(.hwnd, EM_GETLINECOUNT, ByVal 0&, .SelStart)
lLineIndex = .GetLineFromChar(.SelStart) + 1
lCurrentByte = SendMessage(.hwnd, EM_LINEINDEX, -1, 0) '取得目前光标所在行前面有多少个Byte
lLineLength = SendMessage(.hwnd, EM_LINELENGTH, lCurrentByte, 0) + 1 '取得当前行的长度
i = SendMessage(.hwnd, EM_GETSEL, ByVal 0&, ByVal 0&)
J = i / 65536 '取得目前光标所在位置前有多少个Byte
lColNo = J - lCurrentByte + 1
End With
FrmMain.LbRow.Caption = "行:" & lLineIndex & " / " & lLineCount
FrmMain.LbCol.Caption = "列:" & lColNo & " / " & lLineLength
' With FrmMain.StatusBar1
' .Panels(2) = "行:" & lLineIndex & " / " & lLineCount
' .Panels(3) = "列:" & lColNo & " / " & lLineLength
' End With
End Sub以上代码摘自我自己的一个程序中的一个过程,您自己试试,希望能给您点帮助!
'返回当前行第一个字符位置, 行字符数量
Private Sub FindChar(RTFBox As RichTextBox, FChar As Long, BuffLen As Long)
Dim astr As String
Dim l, l1, l2 As Long
Dim SBuffer As String
Dim lBufferLen As Long
Dim F As Long
With RTFBox
SBuffer = Trim(.text & " ")
lBufferLen = Len(SBuffer)
'返回当前行的字符串
astr = Space(1024)
l = SendMessage(.hwnd, EM_LINEINDEX, -1, 0)
iLineY = SendMessage(.hwnd, EM_LINEFROMCHAR, l, 0) '取当前行号
'取当前行前的字符总数
For F = 0 To iLineY - 1
astr = Space(1024)
l = SendMessageStr(.hwnd, EM_GETLINE, F, ByVal astr)
FChar = FChar + Len(Trim(astr))
Next
'当前行开始位置
FChar = FChar + 1: astr = Space(1024)
l = SendMessageStr(.hwnd, EM_GETLINE, iLineY, ByVal astr)
astr = Trim(astr) '取得光标所在行全部字符
BuffLen = Len(astr) - 2 '文本长度
End With
End Sub