MFC学习笔记_关于CSpinButtonCtrl

CSpinButtonCtrl使用起来比较特殊,使用起来,需要注意一些地方.实际的教程也比较少.为了让后人少走弯路,这里写这篇文章以说明.
1.添加EDIT控件
2.添加Spin控件
如果不是这样的顺序的话,使用ctrl+D改变Tab顺序,使spin紧靠edit后面
3.在EDIT控件上面设置group属性(特别注意)
4.在Spin控件上设置
Auto Buddy 为 true
Set Buddy Integer 为 true
Alignment 为 Right Align
5.添加Edit控件 int 变量 m_nNumK;
这个时候点击向下应该可以增加数值
6.在OnInitDialog中添加以下语句
((CSpinButtonCtrl *)GetDlgItem(IDC_SPIN1))->SetRange(-100, 100);

这里在程序中可以写成下面的内容,其中m_timeSpan为Spin控件绑定的变量,m_edtTime为EDIT控件绑定的变量

m_timeSpan.SetBuddy(&m_edtTime);//将Spin空间和EDIT控件绑定

m_timeSpan.SetRange(1, 1000);//调整的范围

这个时候向上的箭头为增加,向下的箭头为减小.

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

设置属性: 
Auto Buddy(自动取关联控件为TAB顺序前一个)
Set Buddy Interger(使控件设置关联控件数值,这个值可以是十进制或十六进制)
Wrap(数值超过范围时循环)
Arrow keys(当按下向上和向下方向键时,控件可以增加或减小)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

例子:

功能,三个spinbutton,设置RGB,改变下面的方块的颜色

OnInitDialog()
{
    
    CDialog::OnInitDialog();
    CSpinButtonCtrl *pSpinRed =(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_RED);//设置红色
    ASSERT(pSpinRed!=NULL);
    
    pSpinRed->SetBuddy(GetDlgItem(IDC_EDIT_RED));
    pSpinRed->SetRange(0,255);
    pSpinRed->SetBase(3);
    pSpinRed->SetPos(128);

    CSpinButtonCtrl *pSpinGREEN =(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_GREEN);//黄色
    ASSERT(pSpinGREEN!=NULL);
    pSpinGREEN->SetBuddy(GetDlgItem(IDC_EDIT_GREEN));
    pSpinGREEN->SetRange(0,255);
    pSpinGREEN->SetBase(1);
    pSpinGREEN->SetPos(128);

    CSpinButtonCtrl *pSpinBLUE =(CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_BLUE);//蓝色
    ASSERT(pSpinBLUE!=NULL);
    pSpinBLUE->SetBuddy(GetDlgItem(IDC_EDIT_BLUE));
    pSpinBLUE->SetRange(0,255);
    pSpinBLUE->SetBase(1);
    pSpinBLUE->SetPos(128);

    // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE);            // 设置大图标
    SetIcon(m_hIcon, FALSE);        // 设置小图标

    // TODO: 在此添加额外的初始化代码
    
    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

  以上是我平时用spin控件时的一些总结,后面还会不断总结

原文地址:https://www.cnblogs.com/pengjun-shanghai/p/5103009.html