滑动条SliderCtrl及实例
2010-11-24 09:47
183 查看
滑动条是一种交互式的、直观的控件。它包括一个沿着控件长度滑动的滑动框和用于显示值范围的可选刻度标志。滑动条控件还有一个内置的键盘界面,所以可用键盘上的箭头键来移动滑块。
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);
}
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);
}
相关文章推荐
- 滑动条SliderCtrl及实例
- Mfc 中多个SliderCtrl滑动事件的捕捉
- Mfc 中多个SliderCtrl滑动事件的捕捉
- 【VS开发】MFC滑动条 CSliderCtrl
- CSliderCtrl的使用
- 学点JS实例-文字滑动(4)
- JS实例-图片上下滑动
- VC 透明滑动控件Slider Control
- VC 透明滑动控件Slider Control
- Android viewpager在最后一页滑动之后跳转到主页面的实例代码
- jQuery cbpContentSlider 滑动切换
- VC++中轻松实现滑动(Slider)控件
- javascript鼠标滑动评分控件完整实例
- CSliderCtrl::SetPageSize
- 有名管道及其实例二——补充捕捉信号ctrl+c功能
- never sliderbar(js版简单的滑动条控件)
- AJAXControlToolKit 之Slider 使用实例
- jquery全屏图片滑动特效插件cbpFWSlider
- CSliderCtrl和CProgressCtrl的简单使用
- iOS开发上下滑动UIScrollview隐藏或者显示导航栏的实例