CEditView滚动的问题

ohahu 2004-04-20 02:18:41
我想添加文字后 ,总滚动到最后一行
我用
int nMin,nMax;
edit.GetScrollRange(SB_VERT,&nMin,&nMax);
edit.SetScrollPos(SB_VERT,nMax);
怎么没效呢

现在只好
edit.SetSel(m_strMemoText.GetLength()-strEvent.GetLength(),m_strMemoText.GetLength());
可是每次这样,EditView总是先在第一行,然后在滚动到最后一行
这样,画面闪烁很大,怎么解决
...全文
79 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
swbreath 2004-04-20
  • 打赏
  • 举报
回复
对了 GetEditCtrl( ) const;得到CEditView的CEdit了解吧
ohahu 2004-04-20
  • 打赏
  • 举报
回复
happyparrot 这种方法闪烁也很大

主要是,SetWindowText以后,EditView总会跳回到第一行
不知道有没有方法,让EditView
默认就留在最后一行呢
swbreath 2004-04-20
  • 打赏
  • 举报
回复
不要使用SetWindowText,要使用追加方式!这样的话自然就会往最后滚动的!!
int nLength = m_edit.SendMessage(WM_GETTEXTLENGTH);
m_edit.SetSel(nLength, nLength);
m_edit.ReplaceSel("abc");
快乐鹦鹉 2004-04-20
  • 打赏
  • 举报
回复
呵呵,我找到了解决办法。CEdit类有个函数叫做LineScroll,可以滚动。
如下:
CEdit &edit = GetEditCtrl();
int lines = edit.GetLineCount();//得到总行数
edit.LineScroll(lines);//滚动到最后一行
快乐鹦鹉 2004-04-20
  • 打赏
  • 举报
回复
CEdit &edit = GetEditCtrl();
CString str;
edit.GetWindowText(str);
edit.SetSel(str.GetLength(),str.GetLength());
好像没有出现你说的效果阿?
ohahu 2004-04-20
  • 打赏
  • 举报
回复
edit.SetWindowText(m_strMemoText);
//edit.SetSel(m_strMemoText.GetLength()-strEvent.GetLength(),m_strMemoText.GetLength());
int nMin,nMax;
GetScrollRange(SB_VERT,&nMin,&nMax);
CEditView::SetScrollPos(SB_VERT,nMax);
滚动条是滚到最后
但是文字并没有到最后一行阿
快乐鹦鹉 2004-04-20
  • 打赏
  • 举报
回复
int nMin,nMax;
GetScrollRange(SB_VERT,&nMin,&nMax);
CEditView::SetScrollPos(SB_VERT,nMax);
我这样写,很好啊。
swbreath 2004-04-20
  • 打赏
  • 举报
回复
你是如何添加文字的?你的添加文字的功能是怎样的?

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧