如何实现两个编辑框其中一个内容改变时另一个编辑框内容相应改变

new_new_man 2011-08-16 05:22:44
我分别给两个编辑框做了ON_EN_CHANGE事件处理,本意是当其中一个编辑框内容发生变化时另一个编辑框内容相应变化,这个过程只需要出现一次就行了,可是结果这样会出现死循环,请高手指定!
...全文
462 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ikillmeba 2012-11-23
  • 打赏
  • 举报
回复
顶一个,有收获啊
xiaojunjun1202 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 new_new_man 的回复:]
我分别给两个编辑框做了ON_EN_CHANGE事件处理,本意是当其中一个编辑框内容发生变化时另一个编辑框内容相应变化,这个过程只需要出现一次就行了,可是结果这样会出现死循环,请高手指定!
[/Quote]


我试了不会啊~~
你出现死循环的代码是???可以贴出来看看不

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

// TODO: 在此添加控件通知处理程序代码
CString str;
GetDlgItemText(IDC_EDIT1,str);
SetDlgItemText(IDC_EDIT2,str);
}
xiaojunjun1202 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 visualeleven 的回复:]
The EN_CHANGE notification is not sent when the ES_MULTILINE style is used and the text is sent through WM_SETTEXT.

你的两个编辑框都设置Multi-line属性

C/C++ code


void CXXDlg::OnChangeEdit1()
{
……
[/Quote]

+1
学习了
chunyou128 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 visualeleven 的回复:]
GetDlgItem(IDC_EDIT1)->SetWindowText(m_text1);
[/Quote]
顶一个
Eleven 2011-08-16
  • 打赏
  • 举报
回复
囧,第二个写错了,OnChangeEdit2里面的处理需要和第一个修改成一致即可,
GetDlgItem(IDC_EDIT1)->SetWindowText(m_text1);
Eleven 2011-08-16
  • 打赏
  • 举报
回复
The EN_CHANGE notification is not sent when the ES_MULTILINE style is used and the text is sent through WM_SETTEXT.

你的两个编辑框都设置Multi-line属性

void CXXDlg::OnChangeEdit1()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.

// TODO: Add your control notification handler code here

static int i=0;

m_text2.Format(_T("%d"), i++);
GetDlgItem(IDC_EDIT2)->SetWindowText(m_text2);
}

void CXXDlg::OnChangeEdit2()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.

// TODO: Add your control notification handler code here
static int i=0;

m_text.Format(_T("%d"), i++);
UpdateData(FALSE);
}
jacky_qiu 2011-08-16
  • 打赏
  • 举报
回复
在 ON_EN_CHANGE 消息里如果判断此edit控件是否有焦点 if ( GetFocus()==this ),如果有焦点就 调用SetWIndowText 设置 另外一个edit框 的字符。
另外一个对话框此时也会收到 ON_EN_CHANGE ,但由于判断没有焦点,所以直接返回。
muxi1231 2011-08-16
  • 打赏
  • 举报
回复
楼上的对头
mudunke775 2011-08-16
  • 打赏
  • 举报
回复
在消息循环中截取消息WM_CHAR,然后判断是哪个EDIT的,然后对另一个用SETWINDOWTEXT

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧