程序代码如下:Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As FINDTEXTEX) As LongPublic Const FR_DOWN = &H1 Public Const FR_MATCHCASE = &H4 Public Const FR_WHOLEWORD = &H2 Public Const FR_REPLACE = &H10 Public Const FR_REPLACEALL = &H20 Public Const FR_NOWHOLEWORD = &H1000 Public Const FR_NOUPDOWN = &H400 Public Const FR_NOMATCHCASE = &H800Public Const WM_USER = &H400 Public Const EM_FINDTEXT = WM_USER + 56 Public Const EM_FINDTEXTEX = WM_USER + 79 Public Const EM_EXSETSEL = WM_USER + 55 Public Const EM_SETTEXTEX = WM_USER + 97Type charrange cpMin As Long cpMax As Long End Type'and lParam is a findtext structure: Type FINDTEXTEX chrg As charrange lpstrText As String chrgText As charrange End Type ‘---------------------------------------------- ’要先定义窗体级变量 Dim FindStar As Long ’---------------------------------------------- Private Sub Command1_Click() Dim fText As FINDTEXTEX Dim cRange As charrange Dim chrgText As charrange Dim Textf As FINDTEXTEX If FindStar = -1 Or FindStar = 0 Then FindStar = 0 Else FindStar = FindStar + 1 End If With cRange .cpMin = FindStar .cpMax = LenB(StrConv(Form1.RichTextBox.Text, vbFromUnicode)) End With With fText .chrg = cRange .lpstrText = TextFind.Text '.chrgText = cRange End With lreturn = SendMessage(Form1.RichTextBox.hwnd, EM_FINDTEXTEX, FR_DOWN, fText) With Textf .chrg = fText.chrgText .lpstrText = TextFind.Text .chrgText = fText.chrgText End With SendMessage Form1.RichTextBox.hwnd, EM_EXSETSEL, 0, Textf FindStar = Textf.chrgText.cpMin End Sub
Public Const FR_MATCHCASE = &H4
Public Const FR_WHOLEWORD = &H2
Public Const FR_REPLACE = &H10
Public Const FR_REPLACEALL = &H20
Public Const FR_NOWHOLEWORD = &H1000
Public Const FR_NOUPDOWN = &H400
Public Const FR_NOMATCHCASE = &H800Public Const WM_USER = &H400
Public Const EM_FINDTEXT = WM_USER + 56
Public Const EM_FINDTEXTEX = WM_USER + 79
Public Const EM_EXSETSEL = WM_USER + 55
Public Const EM_SETTEXTEX = WM_USER + 97Type charrange
cpMin As Long
cpMax As Long
End Type'and lParam is a findtext structure:
Type FINDTEXTEX
chrg As charrange
lpstrText As String
chrgText As charrange
End Type
‘----------------------------------------------
’要先定义窗体级变量
Dim FindStar As Long
’----------------------------------------------
Private Sub Command1_Click()
Dim fText As FINDTEXTEX
Dim cRange As charrange
Dim chrgText As charrange
Dim Textf As FINDTEXTEX
If FindStar = -1 Or FindStar = 0 Then
FindStar = 0
Else
FindStar = FindStar + 1
End If
With cRange
.cpMin = FindStar
.cpMax = LenB(StrConv(Form1.RichTextBox.Text, vbFromUnicode))
End With
With fText
.chrg = cRange
.lpstrText = TextFind.Text
'.chrgText = cRange
End With
lreturn = SendMessage(Form1.RichTextBox.hwnd, EM_FINDTEXTEX, FR_DOWN, fText)
With Textf
.chrg = fText.chrgText
.lpstrText = TextFind.Text
.chrgText = fText.chrgText
End With
SendMessage Form1.RichTextBox.hwnd, EM_EXSETSEL, 0, Textf
FindStar = Textf.chrgText.cpMin
End Sub