多行文本框中选择文本行

来源:互联网 发布:快3源码 编辑:程序博客网 时间:2024/06/09 00:00

多行文本框中选择文本行

 

   Option Explicit 
   Private Const EM_LINELENGTH = &HC1
   Private Const EM_LINEINDEX = &HBB
   Private Const EM_SETSEL = &HB1
  
   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 Form_Load()
    Text1.Text = "aaaaaaa" & vbCrLf & _
                 "bbbbbbbbb" & vbCrLf & _
                 "ccccccccccc" & vbCrLf & _
                 "ddddddddddddd"
    SEL_Line Text1.hWnd, 2, 2    '第2行起选择2行
End Sub

Sub SEL_Line(ByVal hWnd As Long, ByVal whichLine As Long, ByVal howLine As Long)
'=============================chinaboyzyq 2010-04-16============================
'第一个参数是文本框的句柄
'第二个参数是从第几行开始选择(1为第一行)
'第三个参数是选择几行
'===============================================================================
    whichLine = whichLine - 1
    If whichLine < 0 Then whichLine = 0
    Dim length As Long, lc As Long, StartLine As Long, i As Long
   
    For i = whichLine To whichLine + howLine - 1
        lc = SendMessage(hWnd, EM_LINEINDEX, i, ByVal 0&)
        If i = whichLine Then StartLine = lc
        length = length + SendMessage(hWnd, EM_LINELENGTH, lc, ByVal 0&) + 2
    Next
    SendMessage Text1.hWnd, EM_SETSEL, StartLine, ByVal (StartLine + length)
       
End Sub