滑动条SliderCtrl及实例

      滑动条是一种交互式的、直观的控件。它包括一个沿着控件长度滑动的滑动框和用于显示值范围的可选刻度标志。滑动条控件还有一个内置的键盘界面,所以可用键盘上的箭头键来移动滑块。

      MFC类使用CSliderCtrl类来提供滑动条的各项服务。我们同样可以做一个对话框,上面放置红色绿色和蓝色共三个滑动条控件,通过颜色配比来实现区域颜色显示。过程如下:

(1)建立一个对话框工程SliderCtrl,放置三个滑动条控件IDC_SLIDER_RED、IDC_SLIDER_GREEN、IDC_SLIDER_BLUE。在CCSliderCtrlDlg的初始化函数中对这三个控件初始化执行。

//红色

 CSliderCtrl *pSliderRed = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_RED);
 pSliderRed->SetRange(0,255);            //红色滑动条值域
 pSliderRed->SetPos(128);                   //默认

//绿色

 CSliderCtrl *pSliderGreen = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_GREEN);
 pSliderGreen->SetRange(0,255);         //绿色滑动条值域
 pSliderGreen->SetPos(128);

//蓝色

 CSliderCtrl *pSliderBlue = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_BLUE);
 pSliderBlue->SetRange(0,255);             //蓝色滑动条值域
 pSliderBlue->SetPos(128);

(2)为CSliderCtrl类添加WM_HSCROLL消息处理方法,在对话框上点击右键insert event handler,然后编辑滑动事件处理函数即可。

void CCSliderCtrlDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
       int iRed,iGreen,iBlue;
       if((pScrollBar->GetDlgCtrlID() == IDC_SLIDER_RED)
             ||(pScrollBar->GetDlgCtrlID() == IDC_SLIDER_GREEN)
             ||(pScrollBar->GetDlgCtrlID() == IDC_SLIDER_BLUE))
       {
              CSliderCtrl *pSliderRed = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_RED);
              CSliderCtrl *pSliderGreen = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_GREEN);
              CSliderCtrl *pSliderBlue = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_BLUE);

              iRed = pSliderRed->GetPos();
              iGreen = pSliderGreen->GetPos();
              iBlue = pSliderBlue->GetPos();
        }

        UpdateData(TRUE);


        CBrush colorBrush;                     //画刷的使用
        COLORREF clRGB;

        clRGB = RGB(iRed,iGreen,iBlue);
        CClientDC *pClientDC;

        pClientDC = new CClientDC(this);
        colorBrush.CreateSolidBrush(clRGB);
        CRect rect(80,120,160,200);

        pClientDC->FillRect(rect,&colorBrush);
        delete pClientDC;

 

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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值