1,488
社区成员
发帖
与我相关
我的任务
分享'设置Text1.MultiLine=True
Option Explicit
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 Const EM_GETLINE = &HC4
Private Function GetLineText(Text1 As TextBox, ByVal ntx As Long) As String
'str1字节数组255个字节用来存储返回文本框指定行的内容
Dim str1(255) As Byte '请问为什么要设为字节型数组 (这是第一个问题)
Dim str2 As String
Dim i As Long
'设置第一个元素的值为255,表示返回文本框指定行的最大长度,传送参数str1(0)表示接收文本首地址。你把改为10,返回应该是:第三行:12
str1(0) = 255 ' 请问这句代码的作用 (这是第二个问题)
i = SendMessage(Text1.hwnd, EM_GETLINE, ntx, str1(0)) '请问参数为什么会ntx和chr(0),有什么作用(这是第三个问题)
If i = 0 Then
GetLineText = ""
Else
str2 = StrConv(str1, vbUnicode)
GetLineText = Left(str2, InStr(1, str2, Chr(0)) - 1)
End If
End Function
Private Sub Command1_Click()
Debug.Print GetLineText(Text1, 2) '返回文本框中第三行文本内容:第三行:1234567890
End Sub
Private Sub Form_Load()
Text1.Text = "第一行:1234567890" & vbCrLf & "第二行:1234567890" & vbCrLf & "第三行:1234567890" & vbCrLf & "第四行:1234567890" & vbCrLf & "第五行:1234567890"
End Sub