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(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

你可能感兴趣的:(mfc 对话框 toolBox 中的控件 edit control和slider control 或 spin control 使用并绑定)