MFC NumericUpDown Spin控件 CSpinButtonCtrl

5 篇文章 0 订阅

今天做MFC画面时有一个像,.net中的NumericUpDown空间。

我想MFC和.net控件应该不一样,查了一下,MFC中果然没有这个控件。

帖子说就是:EDIT控件 + Spin控件

现在说一下怎么做,在这里记录一下,替他童鞋少走弯路。

步骤:

1.添加EDIT控件
2.添加Spin控件
如果不是这样的顺序的话,使用ctrl+D改变Tab顺序,使spin紧靠edit后面
3.在EDIT控件上面设置group属性(特别注意

或 ((CSpinButtonCtrl *)GetDlgItem(IDC_SPIN_ROUND))->SetBuddy(GetDlgItem(IDC_EDIT_ROUND));将两个关联
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);
这个时候向上的箭头为增加,向下的箭头为减小.


以上就结束了。但这样只能增加整数,小数不行。

点击SPIN控件的增减按键时,对话框的 OnVScroll会收到消息WM_VSCROLL。 
    如果你希望增量为 0.1,最小值为0.0且最大值为10.0,你可以设置SPIN的范围为0-100 (100 = 10/0.1)

1.在上面6中添加如下代码:

CSpinButtonCtrl *pSpin1 = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN1);
	pSpin1->SetRange(1, 100);
	pSpin1->GetBuddy()->SetWindowText(_T("0.01"));


2.添加OnVScroll处理。

3.添加下面代码

void DetectDlg::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
	// TODO: Add your message handler code here and/or call default
	switch(   pScrollBar->GetDlgCtrlID())   
	{   
		case   IDC_SPIN1:    
		{   
			float   nStep=0.01; 
			CString   str;   
			str.Format(_T("%.2f"),nPos*nStep);
			((CSpinButtonCtrl*) pScrollBar)->GetBuddy()->SetWindowText(str);
			break;
		}   
		break;   
	}

	CDialogEx::OnVScroll(nSBCode, nPos, pScrollBar);
}



  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

围观岳老师

雁过留音人过留名你鼓励为我动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值