0

我想要一个多行 CEdit 控件像滚动字幕一样缓慢地向下滚动。

到目前为止,我在 OnTimer() 事件中使用 CEdit::LineScroll()。它可以进行全线滚动,但不如我预期的那么流畅。我尝试用 ScrollWindow() 替换 LineScroll() 以便我可以按像素滚动文本,但是 ScrollWindow() 函数不会绘制应该滚动到控件中的新文本行。

有人对如何实现这一目标有任何想法吗?

如果我没有清楚地描述这个问题。我添加了这些 gif: LineScroll() 做什么(我只需要它更平滑):

LineScrool

这就是 ScrollWindow() 所做的(以下文本被剪切):

滚动窗口

下面是 ScrollWindow() 的代码:

CRect clientRect;
m_editAns.GetClientRect(&clientRect);
m_editAns.ScrollWindow(0, -10, NULL, &clientRect);
m_editAns.UpdateWindow();
ValidateRect(&clientRect);

*PS:该项目在其他地方使用 CEdit 控件,因此我不能用另一个控件替换它,尽管继承是可以接受的。

4

1 回答 1

0

根据CWnd::ScrollWindow

要在滚动完成的同时重新绘制未覆盖区域,请在调用 ScrollWindow 后立即调用UpdateWindow 成员函数。

于 2013-09-25T18:50:56.703 回答