我找不到现成的方法可以使用。倒是可以用SelColor来改变文字本身的颜色,但是,如何把颜色还原也是个问题,因为我要通过不同的事件来标记(用颜色区分)出不同的文字,所以,在改变下一次指定文字的颜色的时候,要把前一次的还原。

解决方案 »

  1.   

    用变量记住上次的SelStart SelLength就能修改上次的内容了
      

  2.   

    privateFunction Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongprivateFunction Declare Function OleTranslateColor Lib "oleaut32.dll" (ByVal lOleColor As Long, ByVal lHPalette As Long, lColorRef As Long) As LongprivateFunction Const EM_SETBKGNDCOLOR = (WM_USER + 67)
    privateFunction Const WM_USER = &H400privateFunction TranslateColor(ByVal clr As OLE_COLOR, _
                            Optional hPal As Long = 0) As Long
        If OleTranslateColor(clr, hPal, TranslateColor) Then
            TranslateColor = -1
        End If
    End Function
    然后使用
    SendMessageLong RichTextBox1.hWnd, EM_SETBKGNDCOLOR, 0, TranslateColor(oColor)
    來設置BackColor
      

  3.   

    http://www.cnpopsoft.com/blog/article.asp?id=3