Visual Studio C++ MFC自带垂直滚动条Vertical Scrollbar,上下滚动整个界面

1:对话框点右键,属性:Vertical Scrollbar改成True

2:对话框点右键,类向导:

3:选择消息,双击WM_VSCROLL:

4:OnInitDialog()里添加:

  SCROLLINFO scrollinfo;
  GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
  scrollinfo.nPage=10; //设置滑块大小
  scrollinfo.nMax=100; //设置滚动条的最大位置0–100
  SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);

 5:OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)里添加:

void CMyDlgDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)   //上下滚动
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值

    SCROLLINFO scrollinfo;
    GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
    int unit=3;        
     switch (nSBCode)  
     {      
     case SB_LINEUP:          //Scroll one line up
         scrollinfo.nPos -= 1;  
         if (scrollinfo.nPos<scrollinfo.nMin)
         {  
             scrollinfo.nPos = scrollinfo.nMin;  
             break;  
         }  
         SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);  
         ScrollWindow(0,unit); 
         break;  
     case SB_LINEDOWN:           //Scroll one line down
         scrollinfo.nPos += 1;  
         if (scrollinfo.nPos+scrollinfo.nPage>scrollinfo.nMax)  //此处一定要注意加上滑块的长度,再作判断
         {  
             scrollinfo.nPos = scrollinfo.nMax;  
             break;  
         }  
         SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);  
         ScrollWindow(0,-unit);  
         break;  
     case SB_PAGEUP:            //Scroll one page up.
         scrollinfo.nPos -= 5;  
         if (scrollinfo.nPos<=scrollinfo.nMin)
         {  
             scrollinfo.nPos = scrollinfo.nMin;  
             break;  
         }  
         SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);  
         ScrollWindow(0,unit*5);  
         break;  
     case SB_PAGEDOWN:        //Scroll one page down        
         scrollinfo.nPos += 5;  
         if (scrollinfo.nPos+scrollinfo.nPage>=scrollinfo.nMax)  //此处一定要注意加上滑块的长度,再作判断
         {  
             scrollinfo.nPos = scrollinfo.nMax;  
             break;  
         }  
         SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);  
         ScrollWindow(0,-unit*5);  
         break;  
     case SB_ENDSCROLL:      //End scroll     
         break;  
     case SB_THUMBPOSITION:  //Scroll to the absolute position. The current position is provided in nPos
         break;  
     case SB_THUMBTRACK:                  //Drag scroll box to specified position. The current position is provided in nPos
         ScrollWindow(0,(scrollinfo.nPos-nPos)*unit);  
         scrollinfo.nPos = nPos;  
         SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
         break;  
     }

    CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}

6:看效果:

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昵称6550523

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值