如何使编辑框的滚动条滚动到指定位置

gooseli 2005-06-27 10:25:12
如何使编辑框的滚动条滚动到指定位置

在编辑框写入信息后,滚动条可以自动向下滚动一行
最好有个例子
...全文
291 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gooseli 2005-06-28
  • 打赏
  • 举报
回复
非常感谢,终于可以实现了
以下几种方法都在vc++.net下实现,但是在使用EM_SETSCROLLPOS和EM_SETSEL的方法没有效果,如有大侠知道其中原因,还请告知
我实现的方法如下:
1)垂直滚动到底端
POINT pt;
//取得滚动范围
GetDlgItem(IDC_EDIT1)->GetScrollRange(SB_VERT, (LPINT)&pt.x, (LPINT)&pt.y);
pt.x = 0;
GetDlgItem(IDC_EDIT1)->SendMessage(EM_LINESCROLL ,pt.x, pt.y);
2)同上
POINT pt;
RECT rect;
//取得编辑框的位置
GetDlgItem(IDC_EDIT1)->GetWindowRect(&rect);
pt.y = rect.bottom;
GetDlgItem(IDC_EDIT1)->SendMessage(EM_LINESCROLL , pt.x, pt.y);
3)同上
POINT pt;
//取得滚动范围
GetDlgItem(IDC_EDIT1)->GetScrollRange(SB_VERT, (LPINT)&pt.x,(LPINT)&pt.y);
pt.x = 0;
GetDlgItem(IDC_EDIT1)->SendMessage(EM_LINESCROLL , pt.x, pt.y);
3)同上
//第一个参数表示列值,第二个参数表示行值(EM_GETLINECOUNT表示编辑框的行数)
GetDlgItem(IDC_EDIT1)->SendMessage(EM_LINESCROLL , 0, EM_GETLINECOUNT);
4)滚动一行
GetDlgItem(IDC_EDIT1)->SendMessage(WM_VSCROLL, SB_LINEDOWN, 0);
4)滚动一行或一页
GetDlgItem(IDC_EDIT1)->SendMessage(EM_SCROLL, SB_LINEDOWN, 0);
GetDlgItem(IDC_EDIT1)->SendMessage(EM_SCROLL, SB_PAGEDOWN, 0);
thinboyxp 2005-06-27
  • 打赏
  • 举报
回复
这是一种比较旧的方法(据说),不过我一直用。
hED是你的Edit控件的handle


POINT pt;
RECT rect;
GetScrollRange(hED,SB_VERT,(LPINT)&pt.x,(LPINT)&pt.y);
pt.x = 0;
GetWindowRect(hED,&rect);
pt.y = pt.y - rect.bottom + rect.top;
SendMessage(hED,EM_SETSCROLLPOS,NULL,(LPARAM)&pt);
zeusvenus 2005-06-27
  • 打赏
  • 举报
回复
mark
gooseli 2005-06-27
  • 打赏
  • 举报
回复
能给个例子吗????
不会用,找不到这些函数!!

可不可以给个例子?
oyljerry 2005-06-27
  • 打赏
  • 举报
回复
SetCurSel

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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