工控编程吧
标题:
98上位机VC MFC滑块控件控制RGB颜色值
[打印本页]
作者:
qq263946146
时间:
2015-12-18 19:16
标题:
98上位机VC MFC滑块控件控制RGB颜色值
(, 下载次数: 2)
上传
点击文件名下载附件
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);
}
复制代码
我们来演示下功能实现的整个过程
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4