如何扩展VB标准控件的功能(2)
因而,如果你想知道光标所在行的具体的行序号,用上面的这个函数就可以轻松的实现了:
Dim lngLineIndex As Long
lngLineIndex = GetLineFromChar(Text1, Text1.SelStart)
MsgBox "You are on line number " & lngLineIndex + 1
反过来,你也可以查到每一行的第一个字符在全文中的字符序号,EM_LINEINDEX消息能帮助你做到这一点:
Public Const EM_LINEINDEX = &HBB
Public Function GetCharFromLine(txtBox As TextBox, LineIndex As Long) As Long
GetCharFromLine = SendMessage( _
txtBox.hWnd, EM_LINEINDEX, LineIndex, 0&)
End Function
想知道文本框里到底有多少行?简单:用EM_GETLINECOUNT消息就可以轻松搞定。同样的,因为这个消息不带任何的参数,我们还是把参数wParam和lParam都置为0:
Public Const EM_GETLINECOUNT = &HBA
Public Function LineCount(txtBox As TextBox) As Long
LineCount = SendMessage( _
TxtBox.hWnd, EM_GETLINECOUNT, 0&, 0&)
End Function
OK,确实很简单吧,我们再来看看另外一个消息:EM_LINELENGTH。通过制定在参数wParam的一个字符序数,返回该字符所在行的长度:
Public Const EM_LINELENGTH = &HC1
Public Function LineLen(txtBox As TextBox, CharPos As Long) As Long
LineLen = SendMessage( _
TxtBox.hWnd, EM_LINELEENGTH, CharPos, 0&)
End Function
- 上一篇:在VB应用程序中巧用DLL
- 下一篇:在VB中用定时控件实现长定时操作