MFC Slide控件与Edit控件关联

如图所示,现在已经实现了拖拽SLIDE控件时,左边的Edit控件内实时显示数值(此时Edit控件是不可手动输入的)。现在有新的要求,需要把Edit控件激活,要求输入框内可... 如图所示,现在已经实现了拖拽SLIDE控件时,左边的Edit控件内实时显示数值(此时Edit控件是不可手动输入的)。
现在有新的要求,需要把Edit控件激活,要求输入框内可以手动输入数值,之后Slide控件的拖动方块会自动跳到相应的位置,也就是实现双向同步控制,这个要怎么实现?请教大神
展开
 我来答
_0x1F1E5E10
2014-11-15 · TA获得超过295个赞
知道小有建树答主
回答量:293
采纳率:50%
帮助的人:308万
展开全部

以下代码实测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类向导默认生成的
}
bhtzu
2014-11-14 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4091万
展开全部
重载编辑框的EN_CHANGE消息,判断GetFocus()==GetDlgItem(IDC_EDIT1),表示编辑框是输入状态(而不是被slider设置),GetDlgItemInt获取数值(或者有关联变量也可以),判断数值范围,如果在合理区间,就设置slider就可以了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
why755
2014-11-14 · TA获得超过311个赞
知道小有建树答主
回答量:624
采纳率:75%
帮助的人:340万
展开全部
自己写一小段程序就可以实现了啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式