龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

如何扩展VB标准控件的功能(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
因而,如果你想知道光标所在行的具体的行序号,用上面的这个函数就可以轻松的实现了: Dim lngLineIndex As Long lngLineIndex = GetLineFromChar(Text1, Text1.SelStart)

   因而,如果你想知道光标所在行的具体的行序号,用上面的这个函数就可以轻松的实现了:

   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

精彩图集

赞助商链接