MFC小笔记:上下控件

一、需求

上下控件实际上是由edit控件和spin控件组成的,共2个控件。为方便描述,称为上下控件,即可以点击spin控件上下按钮增减数值,当通过上下按钮操作时,edit控件中同时显示数值的变化。另外,也可以在edit控件中直接输入数值。

二、设计

  • 1、排放edit控件和spin控件。
  • 2、设置spin控件属性:
    • Auto Buddy为True,按钮控件顺序进行关联。否则无法关联。
    • Set Buddy Interger为True,当spin控件变化时,变化的数值在合作者(即edit控件)中显示。
    • Alignment为Right Align,一般习惯在右边。
  • 3、在资源视图中,按Ctrl+D重新排序,edit和spin控件必须相邻,才能成为Buddy。比如edit1为1,spin1必须为2,edit2为3,spin2为4,等等。

三、编码

在对话框OnInitDialog函数进行初始化:

    // 如果有多个上下控件,可如下初始化:
    int nDlgItem[] = { IDC_SPIN_UP, IDC_SPIN_DOWN, IDC_SPIN_LEFT, IDC_SPIN_RIGHT };
    CSpinButtonCtrl* pSpin = NULL;

    for (int i = 0; i < 4; i++)
    {
        pSpin = (CSpinButtonCtrl*)GetDlgItem(nDlgItem[i]);
        pSpin->SetRange(0, 10); // 范围0~10
        pSpin->SetBase(10);  // 十进制
        pSpin->SetPos(i); // 设置默认显示的值,仅测试
    }

在初始化时,设置了显示数值的范围(下限可以是负数),数值进制以及默认值。当向上按钮超过上限时,无法再增长,反之亦然。另外,edit控件输入超过上限数值时亦会变成上限值。

在需要获取其值的响应函数中处理:

    CString szInfo;
    CSpinButtonCtrl* pSpin = NULL;
    pSpin = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_UP); // 获取控件
    int pos1 = pSpin->GetPos(); // 获取值
    szInfo.Format(L"pos: %d", pos1);
    GetDlgItem(IDC_STC_TIPS)->SetWindowTextW(L"value: "+ szInfo);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值