我想要一个多行 CEdit 控件像滚动字幕一样缓慢地向下滚动。
到目前为止,我在 OnTimer() 事件中使用 CEdit::LineScroll()。它可以进行全线滚动,但不如我预期的那么流畅。我尝试用 ScrollWindow() 替换 LineScroll() 以便我可以按像素滚动文本,但是 ScrollWindow() 函数不会绘制应该滚动到控件中的新文本行。
有人对如何实现这一目标有任何想法吗?
如果我没有清楚地描述这个问题。我添加了这些 gif: LineScroll() 做什么(我只需要它更平滑):
这就是 ScrollWindow() 所做的(以下文本被剪切):
下面是 ScrollWindow() 的代码:
CRect clientRect;
m_editAns.GetClientRect(&clientRect);
m_editAns.ScrollWindow(0, -10, NULL, &clientRect);
m_editAns.UpdateWindow();
ValidateRect(&clientRect);
*PS:该项目在其他地方使用 CEdit 控件,因此我不能用另一个控件替换它,尽管继承是可以接受的。