Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何平滑滚动CEdit(MFC)_Mfc_Scroll_Cedit - Fatal编程技术网

如何平滑滚动CEdit(MFC)

如何平滑滚动CEdit(MFC),mfc,scroll,cedit,Mfc,Scroll,Cedit,我想要一个多行CEdit控件像滚动字幕一样缓慢地向下滚动 到目前为止,我在OnTimer()事件中使用了CEdit::LineScroll()。它可以做一个完整的线辊与不是我所期望的平滑。 我尝试用ScrollWindow()替换LineScroll(),这样我可以按像素滚动文本,但是ScrollWindow()函数不会绘制应滚动到控件中的新文本行 有人知道如何做到这一点吗 以防我没有清楚地描述这个问题。我加上这些礼物: LineScroll()的作用(我只需要它更平滑): 这就是Scroll

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

到目前为止,我在OnTimer()事件中使用了CEdit::LineScroll()。它可以做一个完整的线辊与不是我所期望的平滑。 我尝试用ScrollWindow()替换LineScroll(),这样我可以按像素滚动文本,但是ScrollWindow()函数不会绘制应滚动到控件中的新文本行

有人知道如何做到这一点吗

以防我没有清楚地描述这个问题。我加上这些礼物: LineScroll()的作用(我只需要它更平滑):

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

下面是ScrollWindow()的代码:

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

根据

要在完成滚动的同时重新绘制未覆盖区域, 打电话后立即打电话 滚动窗口


这是我在OnTimer()中的代码:
m_editCtrl.ScrollWindow(0,-10,NULL,&clientRect);m_editCtrl.UpdateWindow()同样的问题,没有显示新行。您是否可以尝试不使用剪切矩形
m_editCtrl.ScrollWindow(0,-10,NULL,NULL)
?如果UpdateWidow没有导致重画,您可能需要首先使用InvalidateBu立使未覆盖的区域无效。我能想到的只有一件事——您是否在代码中处理WM_PAINT消息?可能是编辑重画被跳过了吗?
CRect clientRect;
m_editAns.GetClientRect(&clientRect);
m_editAns.ScrollWindow(0, -10, NULL, &clientRect);
m_editAns.UpdateWindow();
ValidateRect(&clientRect);