用spin调整edit数值时,为何会出现明显的数值滞后改写现象?

2026-04-01 23:051阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计347个文字,预计阅读时间需要2分钟。

用spin调整edit数值时,为何会出现明显的数值滞后改写现象?

两个edit框intm_edit1, m_edit2;一个spin控件CSpinButtonCtrl m_spin;spin控件控制edit1的数值:AutoBuddySetBuddyinteger都绑定上。

两个edit框intm_edit1,m_edit2;一个spin控件CSpinButtonCtrlm_spin;spin控制edit1的数值:AutoBuddySetBu 两个edit框intm_edit1,m_edit2; 一个spin控件CSpinButtonCtrlm_spin; spin控制edit1的数值:AutoBuddySetBuddyinteger都勾上了 taborder紧挨着edit1.点spin上下edit1界面数值会上下动. OnInitDialog()里头添加:m_spin.setrange(1,10); 类初始化里头: m_edit1=1;m_edit2=1; 添加spin响应函数:OnDeltaposSpin(...) 里面加UpdateData(); m_edit2=m_edit1; UpdateData(FALSE); 效果应该是点spin之后edit2会随着edit1同步变化。 但是事实上edit2总是比edit1慢一步。也就是edit1从1变成2,edit2不变 edit1变3了。edit2才从1变成2。 用debug在OnDeltaposSpin(...)里头加breakpoint发现UpdateData()之后 尽管界面上头的数值已经变了,但是m_edit1并没有变。 好奇怪。 求高人指点。代码没有问题。可以自己回去试试。

8 个解决方案

#1

自己顶一下

#2

自己再顶一下。

#3

#4

其间会有一个序号问题 TAB

#5

应该在Edit1的变化响应函数里添加 m_nEdit2=m_nEdit1 m_cEdit1.UpdateData()

#6

voidCMy2002Dlg::OnVScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar) { //TODO:Addyourmessagehandlercodehereand/orcalldefault UpdateData(); m_edit2=m_edit1; UpdateData(FALSE); CDialog::OnVScroll(nSBCode,nPos,pScrollBar); }

#7

sun:序号edit1之后是spin再后面是edit2. Life:m_cEdit1.UpdateData();放在OnChangeEdit1()里面会出现assertionfailed错误。选择忽略之后会出现dialog。但是点击spin只有edit1发生变化,edit2不变。 我后来在OnChangeEdit1()里头加了以下代码: UpdateData(TRUE); m_edit2=m_edit1; UpdateData(FALSE); 也会出现四次assertionfailed错误和两次试图执行系统不支持操作。都忽略之后。可以实现edit1和edit2同步变化。 但是程序有错总不是办法。 大虾们救命啊 大虾们救命啊

#8

jump是对的。高手。 放分。谢谢啦。

用spin调整edit数值时,为何会出现明显的数值滞后改写现象?

本文共计347个文字,预计阅读时间需要2分钟。

用spin调整edit数值时,为何会出现明显的数值滞后改写现象?

两个edit框intm_edit1, m_edit2;一个spin控件CSpinButtonCtrl m_spin;spin控件控制edit1的数值:AutoBuddySetBuddyinteger都绑定上。

两个edit框intm_edit1,m_edit2;一个spin控件CSpinButtonCtrlm_spin;spin控制edit1的数值:AutoBuddySetBu 两个edit框intm_edit1,m_edit2; 一个spin控件CSpinButtonCtrlm_spin; spin控制edit1的数值:AutoBuddySetBuddyinteger都勾上了 taborder紧挨着edit1.点spin上下edit1界面数值会上下动. OnInitDialog()里头添加:m_spin.setrange(1,10); 类初始化里头: m_edit1=1;m_edit2=1; 添加spin响应函数:OnDeltaposSpin(...) 里面加UpdateData(); m_edit2=m_edit1; UpdateData(FALSE); 效果应该是点spin之后edit2会随着edit1同步变化。 但是事实上edit2总是比edit1慢一步。也就是edit1从1变成2,edit2不变 edit1变3了。edit2才从1变成2。 用debug在OnDeltaposSpin(...)里头加breakpoint发现UpdateData()之后 尽管界面上头的数值已经变了,但是m_edit1并没有变。 好奇怪。 求高人指点。代码没有问题。可以自己回去试试。

8 个解决方案

#1

自己顶一下

#2

自己再顶一下。

#3

#4

其间会有一个序号问题 TAB

#5

应该在Edit1的变化响应函数里添加 m_nEdit2=m_nEdit1 m_cEdit1.UpdateData()

#6

voidCMy2002Dlg::OnVScroll(UINTnSBCode,UINTnPos,CScrollBar*pScrollBar) { //TODO:Addyourmessagehandlercodehereand/orcalldefault UpdateData(); m_edit2=m_edit1; UpdateData(FALSE); CDialog::OnVScroll(nSBCode,nPos,pScrollBar); }

#7

sun:序号edit1之后是spin再后面是edit2. Life:m_cEdit1.UpdateData();放在OnChangeEdit1()里面会出现assertionfailed错误。选择忽略之后会出现dialog。但是点击spin只有edit1发生变化,edit2不变。 我后来在OnChangeEdit1()里头加了以下代码: UpdateData(TRUE); m_edit2=m_edit1; UpdateData(FALSE); 也会出现四次assertionfailed错误和两次试图执行系统不支持操作。都忽略之后。可以实现edit1和edit2同步变化。 但是程序有错总不是办法。 大虾们救命啊 大虾们救命啊

#8

jump是对的。高手。 放分。谢谢啦。

用spin调整edit数值时,为何会出现明显的数值滞后改写现象?