durgy的技术笔记 https://passport2.21ic.com/?67716 [收藏] [复制] [RSS]

日志

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

已有 1383 次阅读2008-11-17 23:01 |个人分类:编程|系统分类:网上好文

以下几种方法都在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);


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)