用richtextbox想实现类似记事本的查找功能,查找已经实现,但是不能像记事本那样在查找窗口激活的同时在文本窗口上着重显示,而必须激活后才可以,请问怎么才能改进呢?!~~~~~~

解决方案 »

  1.   

    查找窗口设成模式对话框下面的代码调用系统的查找对话框Private Type FINDREPLACE
    lStructSize As Long 
    hwndOwner As Long 
    hInstance As Long 
    flags As Long
    lpstrFindWhat As String 
    lpstrReplaceWith As String
    wFindWhatLen As Integer
    wReplaceWithLen As Integer
    lCustData As Long 
    lpfnHook As Long 
    lpTemplateName As String 
    End Type'调用 Common Dialog DLL 
    Private Declare Function FindText Lib "comdlg32.dll" Alias "FindTextA" _
    (pFindreplace As FINDREPLACE) As Long
    Private Declare Function ReplaceText Lib "comdlg32.dll" Alias "ReplaceTextA" _
    (pFindreplace As FINDREPLACE) As Long
    Dim frText As FINDREPLACE Private Sub cmdFind_Click()
    FindText frText '调用查找对话框
    End Sub
    Private Sub cmdReplace_Click()
    ReplaceText frText '调用替换对话框
    End Sub
    Private Sub form_Load()
    With frText
    .lpstrReplaceWith = "Replace Text"
    .lpstrFindWhat = "Find Text"
    .wFindWhatLen = 9
    .wReplaceWithLen = 12
    .hInstance = App.hInstance
    .hwndOwner = Me.hWnd
    .lStructSize = LenB(frText)
    End With
    End Sub
      

  2.   

    我已经按以上方法调用了系统对话框,但是我用的是richtextbox,怎么使系统的查找对话框查找richtextbox中的文本呢,谢谢
      

  3.   

    但是richtextbox的find方法的起始位置以字节为单位,在连续搜索既有汉字又有英文的文本时很难确定找到的位置。