7,762
社区成员
发帖
与我相关
我的任务
分享
Option Explicit
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Declare Function SendMessageBynum Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Const EM_GETLINECOUNT As Long = &HBA
Private Const EM_LINEINDEX As Long = &HBB
Private Const EM_LINELENGTH As Long = &HC1
Private Const EM_GETLINE As Long = &HC4
Private Sub Command1_Click()
Dim GetLineCount As Long '返回富文本框行数
Dim LineIndex As Integer '行号
Dim GetLineText As String '取得行内容
Dim lc As Long, linechar As Long
'Dim Line As Integer
Dim LineText() As String
On Error Resume Next
GetLineCount = SendMessage(RichTextBox1.hwnd, EM_GETLINECOUNT, 0, 0)
ReDim LineText(GetLineCount - 1)
'Debug.Print GetLineCount
For LineIndex = 0 To GetLineCount - 1
linechar = SendMessageBynum(RichTextBox1.hwnd, EM_LINEINDEX, LineIndex, 0)
lc = SendMessageBynum(RichTextBox1.hwnd, EM_LINELENGTH, linechar, 0) + 1
GetLineText = String$(lc + 2, 0)
Mid$(GetLineText, 1, 1) = Chr(lc And &HFF)
Mid$(GetLineText, 2, 1) = Chr(lc \ &H100)
lc = SendMessageByString(RichTextBox1.hwnd, EM_GETLINE, LineIndex, GetLineText)
GetLineText = Left(GetLineText, lc)
LineText(LineIndex) = GetLineText
'Debug.Print GetLineText
Next
RichTextBox1.Text = ""
For LineIndex = 0 To GetLineCount - 1
If Asc(LineText(LineIndex)) <> 32 Then
RichTextBox1.Text = RichTextBox1.Text & LineText(LineIndex) & vbCrLf
End If
Next
End Sub
Private Sub Form_Load()
RichTextBox1.Text = " " & vbCrLf
RichTextBox1.Text = RichTextBox1.Text & "dfdcvadv" & vbCrLf
RichTextBox1.Text = RichTextBox1.Text & " " & vbCrLf
RichTextBox1.Text = RichTextBox1.Text & "sdfgsdfgsdfg" & vbCrLf
RichTextBox1.Text = RichTextBox1.Text & " " & vbCrLf
End Sub
'引用Microsoft VBScript Regular Expressions 5.5
Function StrReplace(s As String, p As String, r As String) As String
Dim re As RegExp
Set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = p
StrReplace = re.Replace(s, r)
End Function
Private Sub Command1_Click()
Dim s As String
Dim p As String
Dim r As String
s = Trim(RichTextBox1.Text)
p = "\r\n\s*\r\n"
r = vbCrLf
s = StrReplace(s, p, vbCrLf)
RichTextBox1.Text = ""
RichTextBox1.Text = s
End Sub