Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim LastLine As Long '最后的行数
Dim LineHeight '每行的高度
Private Sub Form_Load()
Set Me.Font = Text1.Font
LineHeight = Me.TextHeight("TT")
End Sub
Private Sub Text1_Change()
Dim Ret As Long
Ret = SendMessage(Text1.hWnd, EM_GETLINECOUNT, 0, 0&) '取行数
If Ret <> LastLine Then
If Text1.Height + Text1.Top + LineHeight > Me.ScaleHeight And Ret > 1 Then
If LastLine <= Ret - 1 Then
Exit Sub '如果已经是最大高度,保持
End If
LastLine = Ret - 1 '超过最大高度
Else
LastLine = Ret
End If
Text1.Height = LastLine * LineHeight '修改高度
End If
End Sub
Private Sub Text1_GotFocus()
LastLine = SendMessage(Text1.hWnd, EM_GETLINECOUNT, 0, 0&)
End Sub
先声明API函数
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
其中 wParam 表示水平移动的行数 若为负值为向左移动.
lParam表示垂直移动行数 若为负值为向上移动.
不过由于 lParam为any类型,所以若传数值 前面加上一个ByVal
例如
SendMessage text.hwnd EM_LINESCROLL ,0,ByVal 1
即可
首先判断 有新的输入,然后调用上面的函数就行了
先声明API函数
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
使用TIME控件,在timer事件中调用
lonRet = SendMessage(richedit1.hwnd, WM_VSCROLL, SB_LINEDOWN, 0)