'模块定义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'在窗体中使用sendmessage函数,具体不是太会,再问问,估计是这样. Private Sub Command3_Click() Dim rc As Long rc = SendMessage(RichTextBox1.hwnd, 10, 5, 5) Text1.Text = rc End Sub
楼主把问题说清楚一点嘛。看这个是否有效:Scroll1.Value = Scroll1.Max 时,流动条到了末端。
但,如果是其他控件,比如列表控件的滚动条,应咋办.
我找了一下Windows消息,想找一下有没有这样的控件消息,似乎没找到!
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'在窗体中使用sendmessage函数,具体不是太会,再问问,估计是这样.
Private Sub Command3_Click()
Dim rc As Long
rc = SendMessage(RichTextBox1.hwnd, 10, 5, 5)
Text1.Text = rc
End Sub
心急啊........
Const EM_GetSel = &HB0
Const EM_LineFromChar = &HC9
Const EM_LineInsex = &HBB
Dim i&, j&, Tlines&, LineNum&
Private Sub Form_Load()
RichTextBox1.LoadFile "c:\cdkey.txt", 1
Tlines = RichTextBox1.Height \ ((20 * RichTextBox1.Font.Size) + 60)
End SubPrivate Function proccess(ByVal textHwnd As Long, lNum As Long) As Long
i = SendMessage(textHwnd, EM_GetSel, wParam, lParam)
j = i / 2 ^ 16
proccess = SendMessage(textHwnd, EM_LineFromChar, j, 0)
End FunctionPrivate Sub Command1_Click()
LineNum = proccess(RichTextBox1.hwnd, LineNum) + 1
If LineNum <= Tlines Then
MsgBox "目前光标在第1 页,第 " & CStr(LineNum) & " 行"
Else
MsgBox "目前光标在第 " & CStr(LineNum \ Tlines + 1) & " 页,第 " & CStr(LineNum) & " 行"
End If
End Sub
Const EM_GetSel = &HB0
Const EM_LineFromChar = &HC9
Const EM_LineInsex = &HBB
Const EM_GETLINECOUNT = &HBA
Dim i&, j&, TotalLines&, Tlines&, LineNum&
Private Sub Form_Load()
RichTextBox1.LoadFile "c:\cdkey.txt", 1
TotalLines = TextBoxLineCnt(RichTextBox1)
Tlines = RichTextBox1.Height \ ((20 * RichTextBox1.Font.Size) + 60)
End SubPrivate Function proccess(ByVal textHwnd As Long, lNum As Long) As Long
i = SendMessage(textHwnd, EM_GetSel, wParam, lParam)
j = i / 2 ^ 16
proccess = SendMessage(textHwnd, EM_LineFromChar, j, 0)
End FunctionPrivate Sub Command1_Click()
LineNum = proccess(RichTextBox1.hwnd, LineNum) + 1
If LineNum <= Tlines Then
MsgBox "目前光标在第1 页,第 " & CStr(LineNum) & " 行"
Else
MsgBox "目前光标在第 " & CStr(LineNum \ Tlines + 1) & " 页,第 " & CStr(LineNum) & " 行"
End If
If (TotalLines \ Tlines + 1) = CStr(LineNum \ Tlines + 1) Or LineNum >= TotalLines - Tlines + 1 Then MsgBox "目前光标在最后一页"
End SubPublic Function TextBoxLineCnt(ct1 As RichTextBox) As Long
TextBoxLineCnt = SendMessage(ct1.hwnd, EM_GETLINECOUNT, 0, 0)
End Function