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); 


  • 相关阅读:
    108. Convert Sorted Array to Binary Search Tree
    107. Binary Tree Level Order Traversal II
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    104. Maximum Depth of Binary Tree
    103. Binary Tree Zigzag Level Order Traversal
    102. Binary Tree Level Order Traversal
    系统和进程相关信息
    文件I/0缓冲
    系统编程概念(文件系统mount等函数的使用)
  • 原文地址:https://www.cnblogs.com/huty/p/8517152.html
Copyright © 2011-2022 走看看