mfc 对话框 toolBox 中的控件 edit control和slider control 或 spin control 使用并绑定

1、把edit control ID为IDC_EDIT2 的属性number改成true

2、分别给绑定变量m_IDC_EDIT2并设置其最大和最小值,添加控件spin control 并绑定变量m_spin

3、将滑块绑定变量m_mIDC_SLIDER1

4、在初始化函数中设定滑块的范围

m_mIDC_SLIDER1.SetRange(0,100);//设置滑块的范围
m_mIDC_SLIDER1.SetPos(90); //设置滑块的初始位置
m_mIDC_SLIDER1.SetLineSize(1); 
m_mIDC_SLIDER1.SetPageSize(3);

m_spin.SetRange(0,100); //设置选值范围
m_spin.SetBuddy(GetDlgItem(IDC_EDIT2));//跟edit控件绑定,buddy这个单词的意思就是朋友,伙伴


5、Slider控件本身并没有响应滑动的消息函数,但可以通过主窗体的WM_HSCROLL消息响应。在类向导中为对话框添加WM_HSCROLL消息,在响应函数中添加:


在类视图中选择要添加事件的类,右键属性,选择消息添加函数OnHScroll回车,编译函数如下:

void CToolBoxTestDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(*pScrollBar == m_mIDC_SLIDER1) //判断是不是该滑块
{
m_IDC_EDIT2 = m_mIDC_SLIDER1.GetPos();//取得当前位置值 
UpdateData(false); //更新Edit control控件
}
Invalidate(); //刷新对话框, 从而刷新预览控件

CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}

6、给edit添加事件(EN_CHANGE)的响应函数OnEnChangeEdit如下:

void CToolBoxTestDlg::OnEnChangeEdit()
{
// TODO:  如果该控件是 RICHEDIT 控件,它将不
// 发送此通知,除非重写 CDialogEx::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。


UpdateData(TRUE); //更新m_IDC_EDIT2
m_mIDC_SLIDER1.SetPos(m_IDC_EDIT2);
Invalidate(); //刷新对话框, 从而刷新预览控件
}

7、添加spin control响应事件(UDN_DELTAPOS-指示控件位置即将更改)方法OnDeltaposSpin1

void CToolBoxTestDlg::OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMUPDOWN pNMUpDown = reinterpret_cast<LPNMUPDOWN>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
UpdateData(true);
if(pNMUpDown->iDelta == -1) // 如果此值为-1 , 说明点击了Spin的往下的箭头
{
if(m_IDC_EDIT2 == 0 )// 不能小于他的范围
{
return;
}
m_IDC_EDIT2--;//=wcstod(m_Edit1,NULL)-1;

m_mIDC_SLIDER1.SetPos(m_IDC_EDIT2);
}
else if(pNMUpDown->iDelta == 1) // 如果此值为1, 说明点击了Spin的往上的箭头
{
if( m_IDC_EDIT2 ==100)//不能大于他的范围
{
return;
}
m_IDC_EDIT2++;

m_mIDC_SLIDER1.SetPos(m_IDC_EDIT2);
/*double a;
a=wcstod(m_Edit1,NULL)+1;
ss.Format(_T("%.1f"),a);*/
}
UpdateData(false);
*pResult = 0;
}


注意:弱要限制Edit输入字符串的长度:

((CEdit *)GetDlgItem(IDC_EDIT1))->SetLimitText(5);//其中IDC_EDIT1是edit control 的ID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

woquNOKIA

谢谢老板!

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

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

打赏作者

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

抵扣说明:

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

余额充值