Привет, люди добрые!
Что-то я совсем запутался. Подскажите, плиз.
У меня есть диалог — класс от wxDialog. В этом диалоге имеется wxListCtrl со стилями wxLC_REPORT и wxLC_EDIT_LABELS. Если начать редактировать какую-нибудь метку в нём, а потом попытаться отменить редактирование, нажав Esc, то диалоговое окно закрывается.
Как бы этого избежать?
Пробовал поставить обработчик на EVT_KEY_DOWN, который вызывает event.Skip(), если был нажат не Esc или если никакая метка не редактируется, но диалог по-прежнему закрывается.
При нажатии Esc ведь не происходит событие EVT_CLOSE, и не вызывается метод Destroy.
Как по правильному обойти такое поведение?
Спасибо заранее!
OS: Windows XP Professional SP2 (MUI language: English)
Borland C++ Builder 6
wxWidgets 2.8.9
Как запретить закрытие диалога? Topic is solved
-
- Knows some wx things
- Posts: 38
- Joined: Tue May 26, 2009 8:39 am
- Location: Moscow, Russia
- Contact:
Как запретить закрытие диалога?
FAQ
1. What the ... ?
2. Again what the ... ?
1. What the ... ?
2. Again what the ... ?
-
- Knows some wx things
- Posts: 38
- Joined: Tue May 26, 2009 8:39 am
- Location: Moscow, Russia
- Contact:
Если на диалоге есть кнопка с идентификатором wxID_CANCEL, то при нажатии Esc диалог будет закрыватся.Wintermute wrote:Да нет же, это не помогает.
Мне нужно ведь отследить закрытие по нажатии Esc, а не на кнопку Cancel.
Для избежания этого необходимо для диалога вызвать:
Code: Select all
wxDialog::SetEscapeId(wxID_NONE);
-
- Knows some wx things
- Posts: 38
- Joined: Tue May 26, 2009 8:39 am
- Location: Moscow, Russia
- Contact:
- T-Rex
- Moderator
- Posts: 1249
- Joined: Sat Oct 23, 2004 9:58 am
- Location: Zaporizhzhya, Ukraine
- Contact:
Code: Select all
Дальше можно почитать src/common/dlgcmn.cpp. В частности код возле wxDialogBase::EmulateButtonClickIfPresent.