您的位置:首页 > 其它

微调按钮SpinButton及实例 .

2012-03-06 00:06 302 查看
 微调按钮(SpinButton)是个简易的滑动条,它经常与一个称为“兄弟窗口”(Buddy Window)的编辑控件结合起来使用,它们可以很好地配合,以响应用户的输入。本实例实现调节RGB三个颜色分量,控制合成的颜色显示。完成的界面如下:
                                


(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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  null delete