MFC入门示例之水平滚动条和垂直滚动条(CScroll Bar)

本文介绍了滚动条的初始化过程及事件处理方法。通过设置SCROLLINFO结构体成员,完成滚动条范围和页面大小的配置,并详细展示了滚动条事件响应的具体实现,包括不同滚动操作的处理逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始化滚动条

1     //初始化滚动条
2     SCROLLINFO si = { 0 };
3     si.cbSize = sizeof(si);
4     si.fMask = SIF_RANGE | SIF_PAGE;
5     si.nMin = 0;
6     si.nMax = 100;
7     si.nPage = 10;
8     m_scroll.SetScrollInfo(&si);

滚动条事件

 1 void CMFCApplication6Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
 2 {
 3     SCROLLINFO si = { 0 };
 4     si.cbSize = sizeof(si);
 5     si.fMask = SIF_ALL;
 6     pScrollBar->GetScrollInfo(&si);
 7 
 8     int nNewPos = si.nPos;
 9     switch (nSBCode) {
10     case SB_THUMBTRACK:
11         nNewPos = nPos;
12         break;
13     case SB_LINELEFT:
14         nNewPos -= 1;
15         break;
16     case SB_LINERIGHT:
17         nNewPos += 1;
18         break;
19     case SB_PAGELEFT:
20         nNewPos -= si.nPage;
21         break;
22     case SB_PAGERIGHT:
23         nNewPos += si.nPage;
24         break;
25     default:
26         break;
27     }
28     if (nNewPos > si.nMax)  
29         nNewPos = si.nMax;
30     if (nNewPos < si.nMin)
31         nNewPos = si.nMin;
32     pScrollBar->SetScrollPos(nNewPos);
33     
34     CString s;
35     s.Format(TEXT("%d"), nNewPos);
36     m_pos = s;
37     UpdateData(FALSE);
38     CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
39 }

转载于:https://www.cnblogs.com/runtimeexception/p/9210195.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值