一,在对话框中建立 spin control 和 edit control
二,spin control 和 edit control 建立伙伴关系
1.自动建立伙伴关系
a.选中 spin control 设置属性
其中:
Alignment: 共有3个选项Unattached,Left,Right Align,按自己的爱好选一个,决定SPIN是在 右边 还在 左边;
Arrow Key: 设置为TRUE 时,当 FOCUS 在SPIN 上时, 可以通过键盘上的上下键对其进行操作,为FALSE时则不可以
Wrap: 设为TRUE 时,当超过范围时,则进行回绕,为FALSE时.......
Auto Buddy: 为TRUE 时,它将把它的下一个控件自动设为自己的BUDDY,当为FALSE时我们,
可以通过SetBuddy(CWnd*)为其设定一个BUDDY !
Set Int Buddy: 设为TRUE时,它将把伙伴控件值设为整数.
b.还需要设置 两个控件的tab顺序,自动建立伙伴关系时,edit control tab顺序的值 需要 比 spin control tab顺序的值 小 1
CTRL+D,这时对话框会显示tab的顺序,以数字的形式显示,然后用鼠标左键依次点击,这时数字就会变成你点击的顺序。
c.设置spin control 的范围
这时需要为spin control 添加一个变量,方便对齐进行操作,选中 spin控件 右键-->添加变量 即可
我为三个spin控件添加的是 m_spin1 ,m_spin2, m_spin3 这个可以随意命名的,方便记忆就行
m_spin1.SetRange(1, 3);
m_spin2.SetRange(60, 200);
m_spin3.SetRange(1, 100);
建立伙伴关系,设置范围后,点击spin控件,edit控件中的值就会随着变化
2.用程序建立伙伴关系 (这个 我没有亲自操作过..........)
m_Spin.SetBuddy(GetDlgItem( m_Edit1 )); // m_Edit1为 Edit空间的ID
m_Spin.SetRange(0,100);//设置范围
实现数值的增减
双击控件添加消息
void CAlarm::OnDeltaposSpin5(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
UpdateData(true);
CString ss;
if(pNMUpDown->iDelta == -1) // 如果此值为-1 , 说明点击了Spin的往下的箭头
{
double a;
a=wcstod(m_Edit1,NULL)-1;
ss.Format(_T("%.1f"),a);
}
else if(pNMUpDown->iDelta == 1) // 如果此值为1, 说明点击了Spin的往上的箭头
{
double a;
a=wcstod(m_Edit1,NULL)+1;
ss.Format(_T("%.1f"),a);
}
m_Edit1=ss;
UpdateData(false);
*pResult = 0;
}