我希望多行CEdit控件像滚动字幕一样缓慢地滚动自己。
到目前为止,我在OnTimer()事件中使用CEdit::LineScroll()。它可以做一个全线滚动不是像我预期的那么顺利。我尝试将LineScroll()替换为ScrollWindow(),这样就可以按像素滚动文本,但是ScrollWindow()函数不绘制应该滚动到控件中的新文本行。
有谁知道如何做到这一点吗?
如果我没有把问题描述清楚的话。我添加了以下gifs: LineScroll()做什么(我只需要它更平滑):

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

下面是ScrollWindow()的代码:
CRect clientRect;
m_editAns.GetClientRect(&clientRect);
m_editAns.ScrollWindow(0, -10, NULL, &clientRect);
m_editAns.UpdateWindow();
ValidateRect(&clientRect);*PS:项目在其他地方使用CEdit控件,因此我不能用另一个控件替换它,尽管继承是可以接受的。
发布于 2013-09-25 18:50:56
据CWnd::滚动窗口称,
若要在完成滚动操作的同时重新绘制未覆盖区域,请在调用UpdateWindow成员函数后立即调用ScrollWindow。
https://stackoverflow.com/questions/19010861
复制相似问题