- Visual C++程序开发范例宝典(软件工程师典藏版)
- 刘志铭 李贺 高茹编著
- 9字
- 2020-06-27 11:09:47
2.12 滑块控件典型实例
实例083 使用滑块控件设置颜色值
这是一个可以提高基础技能的实例
实例位置:光盘\mingrisoft\02\083
实例说明
在使用软件时,经常可以看到滑块控件,本实例实现了使用滑块控件设置颜色值的功能,运行程序,拖动滑块,程序将根据滑块位置对应的颜色值来绘制颜色,程序运行结果如图2.50所示。
图2.50 使用滑块控件设置颜色值
技术要点
在使用滑块控件时,首先要设置控件的范围,然后根据拖动滑块的位置获得相应的数据,要实现这些功能需要使用SetRange方法和GetPos方法。
(1)SetRange方法。SetRange方法用来设置一个滑动块控件的滑动块的范围(位置的最小值和最大值)。
void SetRange( int nMin, int nMax, BOOL bRedraw = FALSE );
参数说明:
nMin:滑动块的最小位置。
nMax:滑动块的最大位置。
bRedraw:重画标志。如果这个参数是TRUE,则在范围被重新设置之后滑动块被重画;否则不重画滑动块。
(2)GetPos方法。GetPos方法用来获取一个滑动块控件中的滑动块的当前位置。
int GetPos( ) const;
实现过程
(1)新建一个基于对话框的应用程序。
(2)向对话框中添加群组控件、图片控件、静态文本控件、编辑框控件和滑块控件,并设置编辑框控件为只读,并为控件添加成员变量。
(3)在对话框初始化时设置滑块控件的范围,代码如下:
BOOL CSliderDlg::OnInitDialog() { CDialog::OnInitDialog(); // …系统代码省略 //设置滑块控件区域 m_Red.SetRange(0,255,TRUE); m_Green.SetRange(0,255,TRUE); m_Blue.SetRange(0,255,TRUE); return TRUE; }
(4)添加DrawColor,该函数用于在图片控件上绘制颜色,代码如下:
void CSliderDlg::DrawColor() { CDC* pDC = m_Color.GetDC(); CRect rect; m_Color.GetClientRect(rect); //获得控件的客户区域 CBrush brush(RGB(m_Red.GetPos(),m_Green.GetPos(),m_Blue.GetPos())); //填充控件区域 pDC->FillRect(rect,&brush); }
(5)处理滑块控件中滑块移动的响应事件,代码如下:
void CSliderDlg::OnReleasedcaptureSlider1(NMHDR* pNMHDR, LRESULT* pResult) { m_rEdit=m_Red.GetPos(); //获得滑块位置 DrawColor(); //绘制颜色 UpdateData(FALSE); *pResult = 0; } void CSliderDlg::OnReleasedcaptureSlider2(NMHDR* pNMHDR, LRESULT* pResult) { m_gEdit=m_Green.GetPos(); //获得滑块位置 DrawColor(); //绘制颜色 UpdateData(FALSE); *pResult = 0; } void CSliderDlg::OnReleasedcaptureSlider3(NMHDR* pNMHDR, LRESULT* pResult) { m_bEdit=m_Blue.GetPos(); //获得滑块位置 DrawColor(); //绘制颜色 UpdateData(FALSE); *pResult = 0; }
举一反三
根据本实例,读者可以:
使用滑块控件设置窗体透明度。