richtextbox Ctrl-T ---> Microsoft Rich TextBox Control 6.0
可以使用API函数BITBLT,你不仅可以在上面设置背景,而且还可以画图。
RICHTEXTBOX一个我写的例子: Sub AddMsgText(strMsg As String, Optional iMsgImportant As enmMsgImportant = iMSG_NORMAL, Optional dtSendTime) Dim lngRest As Long If IsMissing(dtSendTime) Then dtSendTime = Now End If
With rtxtMsg .SelStart = 0 .SelLength = 0
Select Case iMsgImportant Case iMSG_URGENT .SelColor = vbRed Case iMSG_IMPORTANT .SelColor = vbBlue Case iMSG_NORMAL .SelColor = vbBlack End Select .SelText = strMsg + " (" + Format(dtSendTime, "YYYY-MM-DD HH:MM:SS") + ")" + vbCrLf
'如果,文本框中字符数太多的话,将前面的删除 lngRest = Len(.Text) - strMAX_RTF_LENGTH If lngRest > 0 Then .SelStart = strMAX_RTF_LENGTH .SelLength = lngRest .SelText = "" End If .SelStart = 0 End With End Sub
例如:
richtextbox1.text="ansdlfnklasdnflhbn"
richtextbox1.selstart=1
richtextbox1.sellength=5
richtextbox1.forecolor=vbred
richtextbox1.sellength=0随手写的,没有测试过,不过应该是可以的。
首选取得这个文本框的DC,然后对此DC的文本背景和文字进行设置。
设置背为某一颜色,设置画笔为另一颜色,要注意两者的色彩调配,再用文本输出函数显示出文本。这样不仅可以输出文本还可以输出简单图形。如果要用图片可以用富文本框嵌入OLE
2。QQ是C编的。
3。1+2=C的列表框可以设置选定项的ForeColor。
Ctrl-T ---> Microsoft Rich TextBox Control 6.0
Sub AddMsgText(strMsg As String, Optional iMsgImportant As enmMsgImportant = iMSG_NORMAL, Optional dtSendTime)
Dim lngRest As Long If IsMissing(dtSendTime) Then
dtSendTime = Now
End If
With rtxtMsg
.SelStart = 0
.SelLength = 0
Select Case iMsgImportant
Case iMSG_URGENT
.SelColor = vbRed
Case iMSG_IMPORTANT
.SelColor = vbBlue
Case iMSG_NORMAL
.SelColor = vbBlack
End Select
.SelText = strMsg + " (" + Format(dtSendTime, "YYYY-MM-DD HH:MM:SS") + ")" + vbCrLf
'如果,文本框中字符数太多的话,将前面的删除
lngRest = Len(.Text) - strMAX_RTF_LENGTH
If lngRest > 0 Then
.SelStart = strMAX_RTF_LENGTH
.SelLength = lngRest
.SelText = ""
End If
.SelStart = 0
End With
End Sub
谢谢您最简单的办法(至少是我看到现在觉得最简单的说了),不过给您提个小醒——richtextbox是没有forecolor的属性的,有个selcolor属性——具体的效果我还不知道,等我试看看,如果可行,您肯定是最多分的了(我喜欢简单)至于其他好心的朋友我也很感谢你们提的好的建议——不过从我的观点来看,动用到API似乎是有点太杀蚂蚁用原子弹了。至于好心的提供源代码的那位:您的例子是很完整的了,俺已经CO下了,但是一时还没看懂,等过了,我一定收藏您这个函数,分数咱另结