2013-09-25 38 views
0

我想要一個多行CEdit控件像滾動字幕一樣緩慢地向下滾動自己。如何平滑地滾動CEdit(MFC)

到目前爲止,我在OnTimer()事件中使用CEdit :: LineScroll()。它可以做一個完整的產品線,並不像我預期的那麼順利。 我嘗試用ScrollWindow()替換LineScroll(),以便可以按像素滾動文本,但ScrollWindow()函數不會繪製應滾動到控件中的新文本行。

任何人有什麼想法如何實現這一目標?

如果我沒有明確說明問題。我添加這些GIF文件: 什麼LineScroll()做(我只需要它平滑):

LineScrool

而這正是滾屏()做(下面的文字切割):

ScrollWindow

這裏是滾屏()的代碼:

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

* PS:該項目採用的CEdit控制否則在那裏我不能用另一個控件替換它,儘管繼承是可以接受的。

回答

0

CWnd::ScrollWindow

要同時滾動完成重繪顯露區域, 呼叫UpdateWindow member function調用 滾屏之後。

+0

這裏是我在OnTimer()中的代碼: 'm_editCtrl.ScrollWindow(0,-10,NULL,&clientRect); m_editCtrl.UpdateWindow();' 同樣的問題,新行不顯示。 – SuperLucky

+0

您可以嘗試不使用剪裁矩形'm_editCtrl.ScrollWindow(0,-10,NULL,NULL)'嗎? –

+0

如果UpdateWindow不會導致重繪,那麼您可能需要先使用InvalidateRect使未覆蓋區域失效。 – xMRi