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;
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;
相关文章推荐
- ssl证书的对称密钥与非对称密钥
- Ios KVC KVO
- Android JNI: Can't include C++ headers like vector or string...
- 协同过滤算法原理介绍
- C# 中反射获取某类的子类和根据类型名动态创建对象(转载)
- linux 权限掩码 umask
- linux脚本
- ArrayList、HashTable、List、Dictionary的演化及如何选择使用
- ssh连接Linux导出oracle数据
- 性能测试负载模型(一)
- 文件读取与进制转换
- java servlet2.x与servlet3.x规范
- 移动开发者的福利:阿里宣布开源Weex
- [Delphi] Search path vs Library Path vs Browsing Path
- C# 排列组合
- 20159217《网络攻防实践》第八周学习总结
- 利用pg_stat_activity进行问题排查
- 实验二:作业调度模拟程序
- MAC OS X 终端命令入门 (简单常用整理)
- 小代码 1到最大的数