zoukankan      html  css  js  c++  java
  • 【VS开发】MFC滑动条 CSliderCtrl

    在MFC中滑动条(CSliderCtrl)是个常用的控件,用法如下:

    主要要方法有:

    1、设置、取得滑动范围:

     void SetRange( int nMin, int nMax, BOOL bRedraw = FALSE ); 
    void GetRange( int& nMin, int& nMax ) const;
     


    2、设置、取得按下左右箭头滑动间隔:

     int SetLineSize( int nSize ); 
    int GetLineSize( ) const;
     


    3、设置、取得按下PgUp、PgDown时滑动间隔:

     int SetPageSize( int nSize ); 
    int GetPageSize( ) const;
     


    4、设置、取得滑块位置:

     void SetPos( int nPos ); 
    int GetPos( ) const;
     


    5、设置滑动条刻度的频度:

     void SetTicFreq( int nFreq );


    实例:

    在对话框中放一个Slider控件,添加相应的Ctrl型变量为m_slider。在对话框初始化函数OnInitDialog()中添加:

     BOOL CDlgSetup::OnInitDialog() 
    {
     CDialog::OnInitDialog();
     
     // TODO: Add extra initialization here

     m_slider.SetRang(0,100);//设置滑动范围

     m_slider.SetTicFreq(10);//每10个单位画一刻度
     return TRUE;  // return TRUE unless you set the focus to a control
                   // EXCEPTION: OCX Property Pages should return FALSE
    }
     


     Slider控件本身并没有响应滑动的消息函数,但可以通过主窗体的OnHScroll()响应。在类向导中为对话框添加WM_HSCROLL消息,在响应函数中添加:

     void CDlgSetup::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
    {
     // TODO: Add your message handler code here and/or call default
     CSliderCtrl   *pSlidCtrl=(CSliderCtrl*)GetDlgItem(IDC_SLIDER1);
     m_int=pSlidCtrlHue->GetPos();//取得当前位置值  
      CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
    }

    //m_int 即为当前滑块的值。

     

     

     

    当下列情况发生时,SliderCtrl的父窗口都会收到 WM_HSCROLL(水平方向控件) 或者 WM_VSCROLL(竖直方向控件) 通知消息。 
    <1>. 用鼠标点击滑杆,点击一次收到一条通知消息. 
    <2>. 按下鼠标拖动滑杆,拖动时会不断收到通知消息. 
    <3>. 按下方向键,按一次,收到一条通知消息. 
    <4>. 按下 PageUp , PageDown 键,同上. 
    <5>. 按下 Home, End 键,同上. 

    所以实现你所要的功能只需要在父窗口里处理 WM_HSCROLL 或者 WM_VSCROLL消息即可。 

    假设你的滑杆,编辑框控件ID分别为 IDC_SLIDER1, IDC_EDIT1. 

    void CScrollBar_TestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 

    if( pScrollBar->GetDlgCtrlID() == IDC_SLIDER1 ) 

    // nPos就是此时滑杆的位置,显示到 CEdit 就可以了 
    char temp[30]; 
    sprintf_s(temp, 30, "%d", nPos); 

    //或者 获取 Slider 当前位置 
    sprintf_s(temp, 30, "%d", ((CSliderCtrl*)pScrollBar)->GetPos()); 

    GetDlgItem(IDC_EDIT1)->SetWindowText(temp); 


  • 相关阅读:
    基于properties文件的Spring Boot多环境切换
    在mysql命令行下执行sql文件
    thymeleaf th:href 多个参数传递格式
    Mybatis 级联查询时只查出了一条数据
    IDEA技巧-自动导包(Auto import)以及自动优化包
    Drools学习教程
    Drools学习教程
    Drools学习教程
    Drools学习教程
    一道有趣的类加载面试题
  • 原文地址:https://www.cnblogs.com/huty/p/8517153.html
Copyright © 2011-2022 走看看