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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

围观岳老师

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值