在 form 的声明部分:
Const EM_LINESCROLL = &HB6
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
然后使用一个timer定时触发下面的函数:
SendMessageLong Richtextbox.hwnd, EM_LINESCROLL, 0, 1
这里的1如果改成2可以向下滚2行,类推。改成负的可以向上滚动。
我以前写的过程,应该可以帮忙:
'--------------------------------------------------------------------
'显示彩色文字的函数
'Public Sub richShowText(ByVal Control As Object, ByVal StrS As String, ByVal Color As Long)
'--- Control 用于操作的控件名
'--- Str 输出文本内容
'--- Color 输出颜色
'--- Enter 输出是否换行
'--------------------------------------------------------------------------------------
Public Sub richShowText(ByVal Control As Object, ByVal StrS As String, Optional Color As Long = 0, Optional Enter As Boolean = True)
On Error Resume Next
Control.SelColor = Color
Control.SelText = "(" & Time & ") " & StrS
Control.UpTo vbEOF
If Enter Then Control.SelText = vbCrLf
End Sub
'去掉文本后面的回车换行符,以求更加美观
If Mid(txtDialog.Text, 1, Len(vbCrLf)) = vbCrLf Then
txtDialog.Text = Mid(txtDialog.Text, Len(vbCrLf) + 1, Len(txtDialog.Text))
End If