输出文本2

 

 static SCROLLINFO  si;

  //设置页面大小和滚动框范围              SCROLLINFO
  si.cbSize=sizeof(SCROLLINFO);
  si.fMask=SIF_RANGE|SIF_PAGE;
  si.nMin=0;
  si.nMax=NUMLINES-1;
  si.nPage=cyClient/cyChar;
  SetScrollInfo(hwnd,SB_VERT,&si,TRUE);
  return 0;

 case WM_VSCROLL:                                      //处理垂直滚动条消息
  si.cbSize=sizeof(SCROLLINFO);
  si.fMask=SIF_ALL;
  GetScrollInfo(hwnd,SB_VERT,&si);     //保存当前滚动框位置
  iPos=si.nPos;

  //以下调整滚动框的位置
  switch(LOWORD(wParam))                 //wParam低位为通知代码
  {
  case SB_LINEUP:
   si.nPos-=1;
   break;
  case SB_LINEDOWN:
   si.nPos+=1;
   break;
  case SB_PAGEUP:
   si.nPos-=si.nPage;
   break;
  case SB_PAGEDOWN:
   si.nPos+=si.nPage;
   break;
  case SB_THUMBTRACK:
   si.nPos=si.nTrackPos;                   //current  tracking position
   break;
  }

  si.fMask=SIF_POS;
  SetScrollInfo(hwnd,SB_VERT,&si,TRUE);   //若位置越界,则Windows纠正
     GetScrollInfo(hwnd,SB_VERT,&si);             //返回纠正后的正确值

  if(si.nPos!=iPos)                                         //if  position changed
  {
   ScrollWindow(hwnd,0,(iPos-si.nPos)*cyChar,NULL,NULL);
   UpdateWindow(hwnd);
  }
  return 0;
 

y=(i-si.nPos)*cyChar;

附:SCROLLINFO结构

typedef struct tagSCROLLINFO
       
{
       
    UINT cbSize ;// set to sizeof (SCROLLINFO)
       
    UINT fMask ;  // values to set or get
       
    int  nMin ;      // minimum range value
       
    int  nMax ;   // maximum range value
       
    UINT nPage ;  // page size
       
    int  nPos ;   // current position
       
    int  nTrackPos ;// current tracking position
       
}
       
SCROLLINFO, * PSCROLLINFO ;


     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值