惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
宝玉的分享
宝玉的分享
量子位
N
Netflix TechBlog - Medium
M
MIT News - Artificial intelligence
GbyAI
GbyAI
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tailwind CSS Blog
Y
Y Combinator Blog
L
LangChain Blog
The Cloudflare Blog
T
The Blog of Author Tim Ferriss
U
Unit 42
Martin Fowler
Martin Fowler
aimingoo的专栏
aimingoo的专栏
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客

博客园 - 陈锐

微软社区发布会总结(多图杀猫) 微软 Visual Studio 2008 社区发布全国巡展长沙站预报 让微软出钱捐助难民吧 能够下载时改名的文件权限管理 你的博客的性别是什么? 湖南微软开发者俱乐部成立大会顺利召开 湖南微软.NET俱乐部 成立大会事宜 在VB.NET中如何使在Webbrowser中实现标签页中打开新链接 RichTextBox技巧之插入图片(转载) RichTextBox技巧之插入表格(转载) RichTextBox技巧之插入上标和下标(转载) RichTextBox技巧之插入带格式文本(转载) VB 2005的写作进度 再VB 2005的拖放式数据绑定时遇到的问题 有些问题稍微想一下就明白了 写作进度(7月30日) Charles Petzold给撰书人的建议(from 思归的博客) 运行cl.exe编译发生:没有找到 mspdb80.dll 的解决办法 在VSTO 2005下创建的Office CommandBarButton不能定义在过程内
RichTextBox技巧之显示自定义高亮显示(转载)
陈锐 · 2006-09-06 · via 博客园 - 陈锐

Public Sub HighLight(RTB As RichTextBox, lColor As Long)
'add new color to color table
'
add tags \highlight# and \highlight0
'
where # is new color number
Dim iPos As Long
Dim strRTF As String
Dim bkColor As Integer

    
With RTB
        iPos 
= .SelStart
        
'bracket selection
        .SelText = Chr(&H9D) & .SelText & Chr(&H81)
        strRTF 
= RTB.TextRTF
'add new color
        bkColor = AddColorToTable(strRTF, lColor)
'add highlighting
         strRTF = Replace(strRTF, "\'9d""\up1\highlight" & CStr(bkColor) & "")
         strRTF 
= Replace(strRTF, "\'81""\highlight0\up0 ")

         .TextRTF 
= strRTF
        .SelStart 
= iPos
       
End With

End Sub

Function AddColorToTable(strRTF As String, lColor As LongAs Integer
Dim iPos As Long, jpos As Long

Dim ctbl As String
Dim tagColors
Dim nColors As Integer
Dim tagNew As String
Dim i As Integer
Dim iLen As Integer
Dim split1 As String
Dim split2 As String

    
'make new color into tag
    tagNew = "\red" & CStr(lColor And &HFF) & _
        
"\green" & CStr(Int(lColor / &H100) And &HFF) & _
        
"\blue" & CStr(Int(lColor / &H10000))
    
    
'find colortable
    iPos = InStr(strRTF, "{\colortbl")
    
    
If iPos > 0 Then 'if table already exists
        jpos = InStr(iPos, strRTF, ";}")
        
'color table
        ctbl = Mid(strRTF, iPos + 12, jpos - iPos - 12)
        
'array of color tags
        tagColors = Split(ctbl, ";")
        nColors 
= UBound(tagColors) + 2
        
'see if our color already exists in table
        For i = 0 To UBound(tagColors)
            
If tagColors(i) = tagNew Then
                AddColorToTable 
= i + 1
                
Exit Function
            
End If
        
Next i
'{\fonttbl{\f0\fnil\fcharset0 Verdana;}}
'
{\colortbl ;\red0\green0\blue0;\red128\green0\blue255;}
        
        split1 
= Left(strRTF, jpos)
        split2 
= Mid(strRTF, jpos + 1)
        strRTF 
= split1 & tagNew & ";" & split2
        AddColorToTable 
= nColors
    
    
Else
        
'color table doesn't exists, let's make one
        iPos = InStr(strRTF, "{\fonttbl"'beginning of font table
        jpos = InStr(iPos, strRTF, ";}}"+ 2 'end of font table
        split1 = Left(strRTF, jpos)
        split2 
= Mid(strRTF, jpos + 1)
        strRTF 
= split1 & "{\colortbl ;" & tagNew & ";}" & split2
        AddColorToTable 
= 1
    
End If

End Function