Здравствуйте, Defenseur, Вы писали:
D>Есть диалог, унаследованный от CPropertyPage. На нем два элемента Edit. В каком обработчике мне узнать, что в одном из элементов была нажата клавиша?
ИМХО надо ловить EN_CHANGE. Или сабклассить EDITы и ловить WM_CHAR.
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>ИМХО надо ловить EN_CHANGE. Или сабклассить EDITы и ловить WM_CHAR.
Тут возникает небольшая проблема: Edit'ы взаимосвязаны, т.е. я бы хотел по изменении значения в первом менять значение во втором и наоборот. При обработке EM_CHANGE на обоих будет переполнение стека, т.е. тогда хочется на время запрещать обработку этого сообщения
Здравствуйте, Defenseur, Вы писали:
D>Здравствуйте, SchweinDeBurg, Вы писали:
SDB>>ИМХО надо ловить EN_CHANGE. Или сабклассить EDITы и ловить WM_CHAR.
D>Тут возникает небольшая проблема: Edit'ы взаимосвязаны, т.е. я бы хотел по изменении значения в первом менять значение во втором и наоборот. При обработке EM_CHANGE на обоих будет переполнение стека, т.е. тогда хочется на время запрещать обработку этого сообщения
А кто мешает повесить разные обработчики EN_CHANGE на эти EDITы?
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>Здравствуйте, SchweinDeBurg, Вы писали:
SDB>>А кто мешает повесить разные обработчики EN_CHANGE на эти EDITы?
SDB>Кроме того: SDB>
SDB>The EN_CHANGE notification message is sent when the user has taken an action that may have altered text in an edit control.
Вот потому и не катит!!! Висят разные обработчики. И картина такая
1. Изменили тектст в первом
2. Сработал EN_CHANGE1
3. EN_CHANGE1 изменил текст во втором
4. Сработал EN_CHANGE2
5. EN_CHANGE2 изменил текст в первом
6. Сработал EN_CHANGE1
И так далее по циклу имеем при разных обработчиках переполнение стека!!!
А шаги 4 и 6 не нужны, я ведь не редактировал впрямую, а соответствие выставлено шагами 1-3.
Здравствуйте, Defenseur, Вы писали:
D>Вот потому и не катит!!! Висят разные обработчики. И картина такая
D>1. Изменили тектст в первом D>2. Сработал EN_CHANGE1 D>3. EN_CHANGE1 изменил текст во втором D>4. Сработал EN_CHANGE2 D>5. EN_CHANGE2 изменил текст в первом D>6. Сработал EN_CHANGE1 D>И так далее по циклу имеем при разных обработчиках переполнение стека!!!
D>А шаги 4 и 6 не нужны, я ведь не редактировал впрямую, а соответствие выставлено шагами 1-3.
Странно... у меня вот такое никакого переполнения стека не вызывает:
void CTestChangeDlg::OnChangeEdit1()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT2)->SetWindowText(_T("By first"));
}
void CTestChangeDlg::OnChangeEdit2()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT1)->SetWindowText(_T("By second"));
}
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>Здравствуйте, Defenseur, Вы писали:
SDB>Странно... у меня вот такое никакого переполнения стека не вызывает: SDB>
SDB>void CTestChangeDlg::OnChangeEdit1()
SDB>{
SDB> // TODO: Add your control notification handler code here
SDB> GetDlgItem(IDC_EDIT2)->SetWindowText(_T("By first"));
SDB>}
SDB>void CTestChangeDlg::OnChangeEdit2()
SDB>{
SDB> // TODO: Add your control notification handler code here
SDB> GetDlgItem(IDC_EDIT1)->SetWindowText(_T("By second"));
SDB>}
SDB>
Ну вот авбстрагировался я от своего проекта, создал тестовый dialog-based. И по вашему примеру ради интереса. Все тоже самое stack overflow. По крайней мере в седьмой студии
Здравствуйте, Defenseur, Вы писали:
D>Ну вот авбстрагировался я от своего проекта, создал тестовый dialog-based. И по вашему примеру ради интереса. Все тоже самое stack overflow. По крайней мере в седьмой студии
D>Ну вот авбстрагировался я от своего проекта, создал тестовый dialog-based. И по вашему примеру ради интереса. Все тоже самое stack overflow. По крайней мере в седьмой студии