98上位机VC MFC滑块控件控制RGB颜色值
98上位机VC MFC滑块控件控制RGB颜色值
功能展示
滑块控件也是我们常见的控件,如播放音乐时,调节进度与音量,我们当前例程通过三个滑块来调节颜色的RGB什,并将结果填充到一个矩形框显示效果,具体效果如图; 要点提示 在对话框中滑块的滑动响应可以通过NM_RELEASECAPTURE消息或WM_VSCROLL,WM_HSCROLL来处理;我们当前例程的滑块是水平滚动属性,所以我用添加WM_HSCROLL的处理函数来处理滑动的消息;
实现功能 1.新建基于对话框的应用程序 2.拖拽三个滑块控件,ID分别改为IDC_RSLIDER,IDC_GSLIDER, IDC_BSLIDER,并关联变量CSliderCtrl m_RSlider; CSliderCtrl m_GSlider; CSliderCtrl m_BSlider; 拖拽三个静态文本控件,用于显示RGB值,ID分别改为IDC_RVALUE,IDC_GVALUE,IDC_BVALUE.添加一个图片控件,用于显示颜色效果,ID改为IDC_RECT;
3.添加OnHScroll()用于响应滑动消息,添加FillRect()用于填充矩形及刷新RGB颜色值; - void CGkbc8Dlg::FillRect()
- {
- //填充矩形区域
- CDC *pDC = GetDlgItem(IDC_RECT)->GetDC();
- CRect rc;
- GetDlgItem(IDC_RECT)->GetClientRect(&rc);
- CBrush brush(RGB(m_RSlider.GetPos(),m_GSlider.GetPos(),m_BSlider.GetPos()));
- pDC->FillRect(&rc,&brush);
- ReleaseDC(pDC);
- //显示RBG值
- CString str;
- str.Format("%d",m_BSlider.GetPos());
- SetDlgItemText(IDC_BVALUE,str);
- str.Format("%d",m_GSlider.GetPos());
- SetDlgItemText(IDC_GVALUE,str);
- str.Format("%d",m_RSlider.GetPos());
- SetDlgItemText(IDC_RVALUE,str);
- }
复制代码- void CGkbc8Dlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
- {
- // TODO: Add your message handler code here and/or call default
- // 强制转换成CSliderCtrl
- CSliderCtrl* pSlider = (CSliderCtrl*)pScrollBar;
- //如果当前操作R,B,G滑动条时
- if( pSlider->m_hWnd == m_RSlider.m_hWnd||
- pSlider->m_hWnd == m_GSlider.m_hWnd||
- pSlider->m_hWnd == m_BSlider.m_hWnd)
- {
- FillRect();//填充矩形,显示R,G,B值
- }
- CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
- }
复制代码我们来演示下功能实现的整个过程
|