MFC_CScrollBar滚动条

本文详细介绍了如何在MFC对话框中使用滚动条控件,并通过代码示例展示了如何设置滚动条的工作范围及响应滚动条的不同操作,同时解释了如何通过滚动条更新静态文本框的内容。

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

滚动条Horizontal SCROLL BAR
Vertical SCROLL BAR
MFC类 CScrollBar
这里写图片描述
1.对话框中添加一个水平滚动条和静态文本框(显示位置),第一个添加控件变量,第二个添加值变量
2.滚动条工作,必须设置处理滚动条的消息

OnInitDialog()
{
.......
// TODO: 在此添加额外的初始化代码
    //添加啦
    SCROLLINFO si={0};//关于滚动条信息的结构体
    si.cbSize = sizeof(si);//该结构大小
    si.fMask = SIF_RANGE | SIF_PAGE ;//设置滚动条的范围|每一页的大小(鼠标点击滚动条空白时)
    si.nMin = 0;
    si.nMax = 100;//滚动条范围
    si.nPage = 20;//点击空白时
    m_scroll.SetScrollInfo(&si);//将滚动条的控件与该结构体信息关联,进行设置
    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

3.对话框窗口中添加“WM_HSCROLL”消息

void Clb008Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    //UINT nSBCode 是滚动条消息
    SCROLLINFO si = {0};//用于取得滚动条的当前状态,如位置。下面GetScrollInfo(&si)
    si.cbSize = sizeof(si);
    si.fMask = SIF_ALL;
    pScrollBar->GetScrollInfo(&si);
    int nNewPos = si.nPos;
    switch(nSBCode)
    {
    case SB_THUMBTRACK:   //拉动滚动条

        break;
    case SB_LINELEFT:     //向左箭头
        nNewPos -=5;
        break;
    case SB_LINERIGHT:     //向右箭头
        nNewPos +=5;
        break;
    case SB_PAGELEFT:      //向左翻页
        nNewPos -=si.nPage;
        break;
    case SB_PAGERIGHT:     //向右翻页
        nNewPos +=si.nPage;
        break;
    default:
        break;
    }
    //防止越界
    if(nNewPos > si.nMax)
        nNewPos  = si.nMax;
    if(nNewPos < si.nMin)
        nNewPos = si.nMin;
    pScrollBar->SetScrollPos(nNewPos);  //使滚动条根据nNewPos 值到新位置

    //静态文本显示滚动条位置
    CString s;
    s.Format(_T("%d"),nNewPos);
    m_pos = s ;
    UpdateData(FALSE);//不可少,向外显示更新数据
    CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值