您的位置:首页 > 其它

MFC中Spin control的使用

2016-04-22 09:24 821 查看
1、绑定spin和edit

m_Spin.SetBuddy(GetDlgItem(m_Edit1)); 

m_Spin.SetRange(0,100);

2、实现数值的增减

双击控件添加消息

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;

}

1>首先给该控件关联一个变量
(Control类型的)m_Spin 
2>在使用前先通过属性对话框修改它的部分属性
 Alignment 属性共有3个选项Unattached,Left,Right Align,按自己的爱好选一个,决定SPIN是在右边还在左边; 
 Arrow Key,    设置为TRUE 时,当FOCUS 在SPIN 上时,可以通过键盘上的上下键对其进行操作,为FALSE时则不可以
  Wrap, 设为TRUE 时,当超过范围时,则进行回绕,为FALSE时....... 
 Auto Buddy,为TRUE 时,它将把它的下一个控件自动设为自己的BUDDY,当为FALSE时我们,可以通过SetBuddy(CWnd*)为其设定一个BUDDY ! 
 SetIntBuddy,设为TRUE时,它将把伙伴控件值设为整数. 
3>常用属性
 a.设定/   获取SPIN的范围
m_Spin.SetRange(short min,short max); 
m_Spin.SetRange32(int min,int max); 
m_Spin.GetRange(short & min,short & max); 
m_Spin.GetRange32(int & min ,int & max); 
b.设置/ 获取当前显示的数据
m_Spin.SetPos(int pos); 
m_Spin.SetPos32(int pos); 
int    pos = m_Spin.GetPos(); 
int    pos = m_Spin.GetPos32(LPBOOL lpbError = NULL );//A pointer to a boolean value that is set to zero if the value is successfully retrieved or non-zero if an error occurs. If this parameter is set to
NULL, errors are not reported. 
c.设定/ 获取
当前的伙伴关系(BUDDY) 
m_Spin.SetBuddy(CWnd * );//(CWnd * GetDlgItem(ID)) 
CWnd * m_hwnd = m_Spin.GetBuddy(); 
e. 设定/ 获取当前BUDDY 里是按几进制显示的(10   ,   16) 
m_Spin.SetBase(n);//   n 仅为10 或16;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: