MFC Slide控件与Edit控件关联
如图所示,现在已经实现了拖拽SLIDE控件时,左边的Edit控件内实时显示数值(此时Edit控件是不可手动输入的)。现在有新的要求,需要把Edit控件激活,要求输入框内可...
如图所示,现在已经实现了拖拽SLIDE控件时,左边的Edit控件内实时显示数值(此时Edit控件是不可手动输入的)。
现在有新的要求,需要把Edit控件激活,要求输入框内可以手动输入数值,之后Slide控件的拖动方块会自动跳到相应的位置,也就是实现双向同步控制,这个要怎么实现?请教大神 展开
现在有新的要求,需要把Edit控件激活,要求输入框内可以手动输入数值,之后Slide控件的拖动方块会自动跳到相应的位置,也就是实现双向同步控制,这个要怎么实现?请教大神 展开
3个回答
展开全部
以下代码实测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就可以了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己写一小段程序就可以实现了啊!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询