以下代码实测OK
// 对话框OnInitDialog消息响应函数中设置slider控件的范围0~100
// ::SendMessage(::GetDlgItem(m_hWnd, IDC_SLIDER1), TBM_SETRANGEMIN, (WPARAM) TRUE, (LPARAM)0);
// ::SendMessage(::GetDlgItem(m_hWnd, IDC_SLIDER1), TBM_SETRANGEMAX, (WPARAM) TRUE, (LPARAM)100);
//给edit控件绑一个int型成员变量
//给edit控件添加EN_CHANGE消息响应函数
void CMfcdlg2014Dlg::OnChangeEdit1()
{
UpdateData();//edit发生变化,edit上显示的值刷入m_edt
::SendMessage(::GetDlgItem(m_hWnd, IDC_SLIDER1), TBM_SETPOS, (WPARAM) TRUE, (LPARAM)m_edt);//然后给slider发TBM_SETPOS消息,把值发过去显示
}
//给slider控件添加NM_RELEASEDCAPTURE消息响应函数(适用于鼠标拖拽)
void CMfcdlg2014Dlg::OnReleasedcaptureSlider1(NMHDR* pNMHDR, LRESULT* pResult)
{
m_edt = ::SendMessage(::GetDlgItem(m_hWnd, IDC_SLIDER1), TBM_GETPOS, 0, 0);////给slider发TBM_GETPOS消息得到slider的位置值
UpdateData(FALSE);//再刷给edit显示
*pResult = 0;//此行为mfc类向导默认生成的
}
重载编辑框的EN_CHANGE消息,判断GetFocus()==GetDlgItem(IDC_EDIT1),表示编辑框是输入状态(而不是被slider设置),GetDlgItemInt获取数值(或者有关联变量也可以),判断数值范围,如果在合理区间,就设置slider就可以了。
自己写一小段程序就可以实现了啊!