MFC实现默认滚动条

这篇博客详细介绍了如何在Windows应用程序中实现和控制垂直滚动条。在 OnInitDlg 函数中设置了滚动条的参数,如滑块大小和最大位置,并在 OnVScroll 函数中处理了不同滚动操作,包括向上、向下、页面上移和拖动滑块时的窗口滚动逻辑。这些代码实现了基本的滚动功能,确保了滚动条操作的正确性和流畅性。
摘要由CSDN通过智能技术生成
添加以下代码在Oninitdlg()函数里
 SCROLLINFO scrollinfo;
 GetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
 scrollinfo.nPage=10; //设置滑块大小
 scrollinfo.nMax=100; //设置滚动条的最大位置0–100
 SetScrollInfo(SB_VERT,&scrollinfo,SIF_ALL);
添加以下函数
void CLableDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
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_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;  
}
CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

T h a t

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

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

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

打赏作者

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

抵扣说明:

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

余额充值