不太明白楼主的意思,是做RichTextBox中的插入点跳转,还是调用IE打开HyperLink?

解决方案 »

  1.   

    分是够少的,不过分好象没什麽用。
    这是在www.21code.com找到的Option ExplicitPrivate Const EM_CHARFROMPOS& = &HD7
    Private Type POINTAPI
        X As Long
        Y As Long
    End TypePrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long' Return the word the mouse is over.
    Public Function RichWordOver(rtf As RichTextBox, X As Single, Y As Single) As String
    Dim pt As POINTAPI
    Dim pos As Integer
    Dim start_pos As Integer
    Dim end_pos As Integer
    Dim ch As String
    Dim txt As String
    Dim txtlen As Integer    ' 把位置坐标转换为像素.
        pt.X = X \ Screen.TwipsPerPixelX
        pt.Y = Y \ Screen.TwipsPerPixelY    ' Get the character number
        pos = SendMessage(rtf.hWnd, EM_CHARFROMPOS, 0&, pt)
        If pos <= 0 Then Exit Function    '查找单词的开始位置.
        txt = rtf.Text
        For start_pos = pos To 1 Step -1
            ch = Mid$(rtf.Text, start_pos, 1)
            ' 允许数字,字母,下划线
            If Not ( _
                (ch >= "0" And ch <= "9") Or _
                (ch >= "a" And ch <= "z") Or _
                (ch >= "A" And ch <= "Z") Or _
                ch = "_" _
            ) Then Exit For
        Next start_pos
        start_pos = start_pos + 1    '查找单词的结尾
        txtlen = Len(txt)
        For end_pos = pos To txtlen
            ch = Mid$(txt, end_pos, 1)
            ' 允许数字,字母,下划线
            If Not ( _
                (ch >= "0" And ch <= "9") Or _
                (ch >= "a" And ch <= "z") Or _
                (ch >= "A" And ch <= "Z") Or _
                ch = "_" _
            ) Then Exit For
        Next end_pos
        end_pos = end_pos - 1    If start_pos <= end_pos Then _
            RichWordOver = Mid$(txt, start_pos, end_pos - start_pos + 1)
    End FunctionPrivate Sub Form_Load()
        rtfTest.Text = "Welcome to use source code provided by Alp Studio" & _
            vbCrLf & vbCrLf & "This example program is provided as is with no warranty of any kind" & _
            vbCrLf & vbCrLf & "Send the control the EM_CHARFROMPOS message to make it return the character closest to the mouse position." & _
            vbCrLf & vbCrLf & "http://dropwater.163.net"
    End SubPrivate Sub rtftest_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim txt As String    txt = RichWordOver(rtfTest, X, Y)
        If lblCurrentWord.Caption <> txt Then _
            lblCurrentWord.Caption = txt
    End Sub