MFC的Spin Control基础控件的使用

时间:2023-03-09 16:56:49
MFC的Spin Control基础控件的使用

1.向GUI界面添加一个MFC 提供的Spin数值调节控件

2.设置其"伙伴“,并设置数值调节的范围

3.如何让数值显示在文本框中?你可以有多种选择:可以让文本框控件绑定一个数值类型的变量;也可以获取文本框控件后,再将值设置到文本框

 BOOL CNbtscanDlg::OnInitDialog()
{
CDialog::OnInitDialog(); // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码
// 定义“数值调节按钮(spin)”控件对象
CSpinButtonCtrl *pSpinBtn = (CSpinButtonCtrl *)GetDlgItem(IDC_SPIN_DELAY);
// 设置伙伴按钮
pSpinBtn->SetBuddy(GetDlgItem(IDC_EDT_DELAYVAL)); // IDC_EDT_DELAYVAL 与显示界面的一个文本框控件绑定,设置的是值类型
// 最大设置为10000毫秒(10秒)
pSpinBtn->SetRange(, );
// 设置延迟扫描时间默认为500毫秒
UpdateData(TRUE);
m_edt_DelayValue = ;
UpdateData(FALSE);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}

4.响应函数“OnDeltaposSpinDelay”,当用户单击上、下调值按钮时,改变文本框的数值

 void CNbtscanDlg::OnDeltaposSpinDelay(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if (pNMUpDown->iDelta == -)
{
// 用户按下了spin控件的向下箭头
m_edt_DelayValue -= ;
if (m_edt_DelayValue < )
{
m_edt_DelayValue = ;
}
}
else if (pNMUpDown->iDelta == )
{
// 用户按下了spin控件的向上箭头
m_edt_DelayValue += ;
if (m_edt_DelayValue > )
{
m_edt_DelayValue = ;
}
}
UpdateData(FALSE);
*pResult = ;
}