关于richtextbox像素滚动的疑难问题

jsyc12365 2014-11-07 11:30:43
自己想用vb6做一个类似readbook的读书程序。
在用richtextbox做的时候,当txt文本较小的时候,可以控制缓慢滚动(像素级)
txt文本越大,滚动越快,甚至不是一行一行的滚动。
做法是参考网上的“RichTextBox控件内容像素级滚动”这个例程序
主要代码如下:
Private Declare Function GetScrollPos Lib "user32" (ByVal hWnd As Long, ByVal nBar As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
Private Const SB_THUMBPOSITION = 4
Private Const SB_VERT = 1
Private Const WM_VSCROLL = &H115
Dim nPos As Long

Private Sub Form_Load()
RichTextBox1.LoadFile ("c:\例文.txt")
End Sub

Private Function MakeLong(ddLow As Long, ddHigh As Long) As Long
MakeLong = ddHigh * 65536 + ddLow
End Function

Private Sub Command1_Click()
nPos = GetScrollPos(RichTextBox1.hWnd, SB_VERT)
Timer1.Enabled = Not Timer1.Enabled
End Sub

Private Sub Timer1_Timer()
SendMessage RichTextBox1.hWnd, WM_VSCROLL, MakeLong(SB_THUMBPOSITION, nPos + 1), 0
nPos = nPos + 1
End Sub

当txt文本较小的时候,可以控制缓慢滚动(像素级)
txt文本越大,滚动越快,甚至不是一行一行的滚动。

用GetScrollRange 得到RichTextBox1滚动条的MAX时,txt内容越大,MAX越大,但最大只能是65535。
调试发现,当MAX低于65535时,可以实现像素级滚动,达到65535后,滚动开始不正常,越大越快。

因为对API不怎么熟悉,想问问高手,怎么搞。

或者有什么别的思路,可以实现文本内容像素滚动。
...全文
515 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
剑无道 2015-12-11
  • 打赏
  • 举报
回复
我也遇到这个问题。 内容少的时候,效果还可以。 当内容多了,滚动条移动一点,内容移动就比较多了,这样滚动就还是很快了。 请问你现在已经解决了吗?
赵4老师 2014-11-11
  • 打赏
  • 举报
回复
让控件只加载当前页和前后两页的文字?

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧