微调按钮SpinButton及实例 .
2012-03-06 00:06
302 查看
微调按钮(SpinButton)是个简易的滑动条,它经常与一个称为“兄弟窗口”(Buddy Window)的编辑控件结合起来使用,它们可以很好地配合,以响应用户的输入。本实例实现调节RGB三个颜色分量,控制合成的颜色显示。完成的界面如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/16/96006bacffa429de7ba33b4d558aba98.gif)
(1)新建一个基于对话框的应用程序,在上面分别添加三个静态文本、三个编辑框(IDC_EDIT_RED,IDC_EDIT_GREEN,IDC_EDIT_BLUE)、三个SpinButtion控件(IDC_EDIT_RED,IDC_EDIT_GREEN,IDC_EDIT_BLUE)。在CSpinButtonDlg的OnInitDialog方法里配置该对话框初始化,如下:
//设置红色参数
CSpinButtonCtrl *pSpinRed = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_RED); //红色SpinButton控件变量
ASSERT(pSpinRed != NULL);
pSpinRed->SetBuddy(GetDlgItem(IDC_EDIT_RED)); //设置红色的兄弟窗口,两者绑定变化
pSpinRed->SetRange(0,255); //设置红色的编辑框的上下限
pSpinRed->SetPos(128); //设置默认值
CSpinButtonCtrl *pSpinGreen = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_GREEN); //绿色SpinButton控件变量
ASSERT(pSpinGreen != NULL);
pSpinGreen->SetBuddy(GetDlgItem(IDC_EDIT_GREEN)); //设置绿色的兄弟窗口,两者绑定变化
pSpinGreen->SetRange(0,255); //设置绿色的编辑框的上下限
pSpinGreen->SetPos(128); //设置默认值
CSpinButtonCtrl *pSpinBlue = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_BLUE); //绿色SpinButton控件变量
ASSERT(pSpinBlue != NULL);
pSpinBlue->SetBuddy(GetDlgItem(IDC_EDIT_BLUE)); //设置绿色的兄弟窗口,两者绑定变化
pSpinBlue->SetRange(0,255); //设置绿色的编辑框的上下限
pSpinBlue->SetPos(128); //设置默认值
(2)点击编辑框右键添加变量,为三个编辑框分别添加三个变量m_red,m_green,m_blue。右键点击类视图,给对话框类添加私有成员函数void RGBColorChange(void),实现根据RGB颜色分量来改变颜色,函数体如下:
void CSpinButtonDlg::RGBColorChange(void)
{
UpdateData(TRUE); //把值从控件拷贝到变量
CBrush colorBrush;
COLORREF clRGB;
clRGB = RGB(m_red,m_green,m_blue); //构造RGB888格式的颜色值
CClientDC *pClientDC;
pClientDC = new CClientDC(this);
colorBrush.CreateSolidBrush(clRGB);
CRect rect(80,120,160,200);
pClientDC->FillRect(rect,&colorBrush); //用画刷填充矩形区域
delete pClientDC;
}
(3)为3个颜色编辑框添加EN_CHANGE事件处理,方法是右键点击编辑框控件添加event handler,选择对应事件消息及函数。注意此处没有为SpinButton添加事件处理,仅仅为编辑框添加就可以实现目的。
void CSpinButtonDlg::OnEnChangeEditRed()
{
RGBColorChange();
}
void CSpinButtonDlg::OnEnChangeEditGreen()
{
RGBColorChange();
}
void CSpinButtonDlg::OnEnChangeEditBlue()
{
RGBColorChange();
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/16/96006bacffa429de7ba33b4d558aba98.gif)
(1)新建一个基于对话框的应用程序,在上面分别添加三个静态文本、三个编辑框(IDC_EDIT_RED,IDC_EDIT_GREEN,IDC_EDIT_BLUE)、三个SpinButtion控件(IDC_EDIT_RED,IDC_EDIT_GREEN,IDC_EDIT_BLUE)。在CSpinButtonDlg的OnInitDialog方法里配置该对话框初始化,如下:
//设置红色参数
CSpinButtonCtrl *pSpinRed = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_RED); //红色SpinButton控件变量
ASSERT(pSpinRed != NULL);
pSpinRed->SetBuddy(GetDlgItem(IDC_EDIT_RED)); //设置红色的兄弟窗口,两者绑定变化
pSpinRed->SetRange(0,255); //设置红色的编辑框的上下限
pSpinRed->SetPos(128); //设置默认值
CSpinButtonCtrl *pSpinGreen = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_GREEN); //绿色SpinButton控件变量
ASSERT(pSpinGreen != NULL);
pSpinGreen->SetBuddy(GetDlgItem(IDC_EDIT_GREEN)); //设置绿色的兄弟窗口,两者绑定变化
pSpinGreen->SetRange(0,255); //设置绿色的编辑框的上下限
pSpinGreen->SetPos(128); //设置默认值
CSpinButtonCtrl *pSpinBlue = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_BLUE); //绿色SpinButton控件变量
ASSERT(pSpinBlue != NULL);
pSpinBlue->SetBuddy(GetDlgItem(IDC_EDIT_BLUE)); //设置绿色的兄弟窗口,两者绑定变化
pSpinBlue->SetRange(0,255); //设置绿色的编辑框的上下限
pSpinBlue->SetPos(128); //设置默认值
(2)点击编辑框右键添加变量,为三个编辑框分别添加三个变量m_red,m_green,m_blue。右键点击类视图,给对话框类添加私有成员函数void RGBColorChange(void),实现根据RGB颜色分量来改变颜色,函数体如下:
void CSpinButtonDlg::RGBColorChange(void)
{
UpdateData(TRUE); //把值从控件拷贝到变量
CBrush colorBrush;
COLORREF clRGB;
clRGB = RGB(m_red,m_green,m_blue); //构造RGB888格式的颜色值
CClientDC *pClientDC;
pClientDC = new CClientDC(this);
colorBrush.CreateSolidBrush(clRGB);
CRect rect(80,120,160,200);
pClientDC->FillRect(rect,&colorBrush); //用画刷填充矩形区域
delete pClientDC;
}
(3)为3个颜色编辑框添加EN_CHANGE事件处理,方法是右键点击编辑框控件添加event handler,选择对应事件消息及函数。注意此处没有为SpinButton添加事件处理,仅仅为编辑框添加就可以实现目的。
void CSpinButtonDlg::OnEnChangeEditRed()
{
RGBColorChange();
}
void CSpinButtonDlg::OnEnChangeEditGreen()
{
RGBColorChange();
}
void CSpinButtonDlg::OnEnChangeEditBlue()
{
RGBColorChange();
}
相关文章推荐
- 微调按钮SpinButton及实例
- Bootstrap历练实例:按钮(Button)插件单个切换
- 微调按钮 Spin Buttons@GTK+ 2.0 中文教程连载
- C#动态创建button按钮的方法实例详解
- android用户界面之按钮(Button)教程实例汇
- Spin(微调)控件(CSpinButtonCtrl)
- Bootstrap 历练实例 - 按钮(Button)插件复选框
- android用户界面之按钮(Button)教程实例汇
- emWin 2天速成实例教程013_修改BUTTON按钮等控件背景皮肤颜色_SetBkColor
- android用户界面之按钮(Button)教程实例汇
- android用户界面之按钮(Button)教程实例汇
- Android studio button 按钮 四种绑定事件的方法【实例代码】
- 微信小程序组件 contact-button(客服会话按钮)详解及实例代码
- android用户界面之按钮(Button)教程实例汇
- AutoLISP对话框DCL按钮Button设计实例
- android-UI组件实例大全(三)------按钮Button与图片按钮ImageButton
- IOS 按钮(button)用法与属性实例
- Button按钮四种监听(二)及实例
- IOS 按钮(button)用法与属性实例
- EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码