两个edit框 int m_edit1,m_edit2;
一个spin控件 CSpinButtonCtrl m_spin;
spin控制edit1的数值:Auto Buddy Set Buddy integer都勾上了
tab order紧挨着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并没有变。
好奇怪。
求高人指点。代码没有问题。可以自己回去试试。
一个spin控件 CSpinButtonCtrl m_spin;
spin控制edit1的数值:Auto Buddy Set Buddy integer都勾上了
tab order紧挨着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并没有变。
好奇怪。
求高人指点。代码没有问题。可以自己回去试试。
m_nEdit2=m_nEdit1
m_cEdit1.UpdateData()
{
// TODO: Add your message handler code here and/or call default
UpdateData();
m_edit2=m_edit1;
UpdateData(FALSE);
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}
我后来在OnChangeEdit1()里头加了以下代码:
UpdateData(TRUE);
m_edit2=m_edit1;
UpdateData(FALSE);
也会出现四次assertion failed错误和两次试图执行系统不支持操作。都忽略之后。可以实现edit1和edit2同步变化。
但是程序有错总不是办法。大虾们救命啊大虾们救命啊