如题.请各位老师不吝赐教!
比如一个textbox里面的内容如下:123
321
456
654这样的话,怎么样才能取得第一行的内容,及以下第二行、第三行、第四行...第N行的内容?

解决方案 »

  1.   


    Option Explicit
        
      Private Const EM_GETLINE = &HC4
      Private Const EM_LINELENGTH = &HC1
      Private 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 Declare Sub RtlMoveMemory Lib "KERNEL32" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
        
      Sub TB_GetLine(ByVal hWnd As Long, ByVal whichLine As Long, Line As String)
              Dim length     As Long, bArr()       As Byte, bArr2()       As Byte, lc       As Long
              lc = SendMessage(hWnd, EM_LINEINDEX, whichLine, ByVal 0&)
              length = SendMessage(hWnd, EM_LINELENGTH, lc, ByVal 0&)
              If length > 0 Then
                      ReDim bArr(length + 1) As Byte, bArr2(length - 1) As Byte
                      Call RtlMoveMemory(bArr(0), length, 2)
                      Call SendMessage(hWnd, EM_GETLINE, whichLine, bArr(0))
                      Call RtlMoveMemory(bArr2(0), bArr(0), length)
                      Line = StrConv(bArr2, vbUnicode)
              Else
                      Line = ""
              End If
      End Sub
        
      Private Sub Command1_Click()
              Dim S     As String
              Call TB_GetLine(Text1.hWnd, 4, S)       '// 取第4行资料
              MsgBox S
      End Sub
      Private Sub Form_Load()
              Dim NL     As String
              NL = Chr(13) + Chr(10)
              Text1.Text = "jaljfkl" & NL & "jaljkdl" & NL & "70ur908400" & NL & "hdjfl" & NL & "1314" & NL & "520"
      End Sub
      

  2.   

    更正楼上的一个错误:
    参数whichLine是从0开始的,
    Call TB_GetLine(Text1.hWnd, 4, S) 
    其实S获取的是第5行而不是第4行的内容
    要获取第n行的内容,应该是
    Call TB_GetLine(Text1.hWnd, n-1, S) 
    然后S就是第n行的内容了
      

  3.   

    呵呵,大家动作都快啊
    SendMessage 是关键