[小练eVC]常用控件之微调按钮
微调按钮是一个简易的滚动条,它经常与一个称为“伙伴窗口”(Buddy Windows)的编辑控件结合在一起使用,他们可以很好的配合,MFC类CSpinButtonCtrl封装了微调控件。本例将把编辑框和微调按钮组合起来,用来输入RGB的三种颜色。
1、使用eVC创建一个基于MFC的应用程序SpinUse;
2、设计界面如图:
对话框空间属性如下
    
        
    
        
3、在CSPinUseDlg的OnInitDialog中添加如下代码
CSpinButtonCtrl * pSpinRed= (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_RED);
    ASSERT(pSpinRed!=NULL);
    pSpinRed->SetBuddy(GetDlgItem(IDC_EDT_RED));
    pSpinRed->SetRange(0,255);
    pSpinRed->SetPos(128);

    CSpinButtonCtrl * pSpinGreen= (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_GREEN);
    ASSERT(pSpinGreen!=NULL);
    pSpinGreen->SetBuddy(GetDlgItem(IDC_EDT_GREEN));
    pSpinGreen->SetRange(0,255);
    pSpinGreen->SetPos(128);

    CSpinButtonCtrl * pSpinBlue= (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_BLUE);
    ASSERT(pSpinBlue!=NULL);
    pSpinBlue->SetBuddy(GetDlgItem(IDC_EDT_BLUE));
    pSpinBlue->SetRange(0,255);
    pSpinBlue->SetPos(128);
4、用类向导添加在个颜色编辑框的OnChange函数。并添加如下代码。
void CSpinUseDlg::OnColorChange() 
{

UpdateData(TRUE);
CBrush colorBrush;
COLORREF clRGB;

clRGB=RGB(m_red,m_green,m_blue);
CClientDC*pClientDC;
pClientDC= new CClientDC(this);
colorBrush.CreateSolidBrush(clRGB);
CRect rect(100,200,200,300);
pClientDC->FillRect(rect,&colorBrush);
delete pClientDC;
// TODO: If this is a RICHEDIT control, the control will not
    // send this notification unless you override the CDialog::OnInitDialog()
    // function and call CRichEditCtrl().SetEventMask()
    // with the ENM_CHANGE flag ORed into the mask.
    
    // TODO: Add your control notification handler code here
    
}
5、完成编译
1、使用eVC创建一个基于MFC的应用程序SpinUse;
2、设计界面如图:

对话框空间属性如下
| 标识(ID) | 描述 | 
| IDC_EDT_RED | 编辑框,范围为0-255,对应变量为m_red | 
| IDC_EDT_GREEN | 编辑框,范围为0-255,对应变量为m_green | 
| IDC_EDT_BLUE | 编辑框,范围为0-255,对应变量为m_blue | 
| IDC_SPIN_RED | 微调按钮,需要选中SER BUDDY INTEGER复选框 | 
| IDC_SPIN_GREEN | 微调按钮,需要选中SER BUDDY INTEGER复选框 | 
| IDC_SPIN_BLUE | 微调按钮,需要选中SER BUDDY INTEGER复选框 | 
3、在CSPinUseDlg的OnInitDialog中添加如下代码
CSpinButtonCtrl * pSpinRed= (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_RED);
    ASSERT(pSpinRed!=NULL);
    pSpinRed->SetBuddy(GetDlgItem(IDC_EDT_RED));
    pSpinRed->SetRange(0,255);
    pSpinRed->SetPos(128);
    CSpinButtonCtrl * pSpinGreen= (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_GREEN);
    ASSERT(pSpinGreen!=NULL);
    pSpinGreen->SetBuddy(GetDlgItem(IDC_EDT_GREEN));
    pSpinGreen->SetRange(0,255);
    pSpinGreen->SetPos(128);
    CSpinButtonCtrl * pSpinBlue= (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_BLUE);
    ASSERT(pSpinBlue!=NULL);
    pSpinBlue->SetBuddy(GetDlgItem(IDC_EDT_BLUE));
    pSpinBlue->SetRange(0,255);
    pSpinBlue->SetPos(128);4、用类向导添加在个颜色编辑框的OnChange函数。并添加如下代码。
void CSpinUseDlg::OnColorChange() 
{
UpdateData(TRUE);
CBrush colorBrush;
COLORREF clRGB;
clRGB=RGB(m_red,m_green,m_blue);
CClientDC*pClientDC;
pClientDC= new CClientDC(this);
colorBrush.CreateSolidBrush(clRGB);
CRect rect(100,200,200,300);
pClientDC->FillRect(rect,&colorBrush);
delete pClientDC;// TODO: If this is a RICHEDIT control, the control will not
    // send this notification unless you override the CDialog::OnInitDialog()
    // function and call CRichEditCtrl().SetEventMask()
    // with the ENM_CHANGE flag ORed into the mask.
    
    // TODO: Add your control notification handler code here
    
}
                    
                

                
            
        
浙公网安备 33010602011771号