MFC 滑块控件简单使用

▲ 关联值

在滑块的父窗体 Dlg 中,BOOL CMFCApplication1Dlg::OnInitDialog() 初始化:

m_pos 关联 Textbox,m_sb 关联水平滑块。

    // 设置编辑区默认
    m_pos = 50;
    UpdateData(FALSE);

    // 设置滑块范围
    m_sb.SetScrollRange(0, 100);
    // 设置滑块位置
    m_sb.SetScrollPos(m_pos);

在滑块的父窗体 Dlg 中, ON_WM_HSCROLL()消息。

// 父窗口  滑块处理
void CMFCApplication1Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    if (pScrollBar == &m_sb) // 判断对应滑块
    {
        switch (nSBCode) //判断滚动条的哪一部分
        {
        case SB_THUMBPOSITION: //滑块位置
        {
            m_sb.SetScrollPos(nPos);
            m_pos = nPos;
            UpdateData(FALSE);
        }
        break;
        case SB_LINELEFT: //向左的箭头
        {
            int p = m_sb.GetScrollPos() - 1; // 不能用 nPos,这个是点击完成后才有的。
            m_pos = p > 0 ? p : 0;
            m_sb.SetScrollPos(m_pos);
            UpdateData(FALSE);
        }
        break;
        case SB_LINERIGHT: //向右的箭头
        {
            int p = m_sb.GetScrollPos() + 1; // 不能用 nPos,这个是点击完成后才有的。
            m_pos = p > 100 ? p : 0;
            m_sb.SetScrollPos(m_pos);
            UpdateData(FALSE);
        }
        break;
        case SB_PAGELEFT: //箭头和滑块之间左边
            break;
            //箭头和滑块之间右边
        case SB_PAGERIGHT:
            break;
        default:
            break;
        }
    }

    CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}

上面的 case 分别判断点击在哪一个位置,分别做相应的处理。

posted @   double64  阅读(137)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示