У меня есть wxDialog с somes wxTextCtrl в нем. Мне нужно подключать события, когда эти wxTextCtrl получают и теряют фокус. В частности, каждый wxTextCtrl имеет текст по умолчанию. Когда пользователь прикасается к нему для записи, текст по умолчанию исчезает, и он позволяет пользователю писать с самого начала. Эта часть предназначена для wxEVT_SET_FOCUS.Can't Connect Focus Events в wxWIdgets 3.0 C++
Затем, если пользователь ничего не пишет и покидает wxTextCtrl, я снова устанавливаю текст по умолчанию. И эта часть для wxEVT_KILL_FOCUS. Однако я не мог подключить textctrl к событиям. Я уже пробовал:
Connect(wxTXTCRLID , wxEVT_SET_FOCUS , wxFocusEventHandler(MyDialog::OnFocus) , nullptr , this);
Это тоже:
Bind(wxEVT_SET_FOCUS , &MyDialog::OnFocus , this , wxTXTCRLID);
С таблицы событий тоже:
BEGIN_EVENT_TABLE(MyDialog , wxDialog)
EVT_SET_FOCUS(MyDialog::OnFocus)
END_EVENT_TABLE()
И это:
BEGIN_EVENT_TABLE(MyDialog , wxDialog)
EVT_COMMAND_SET_FOCUS(wxTXTCRLID , MyDialog::OnFocus)
END_EVENT_TABLE()
В примерах таблицы событий, я обязательно объявить его в файле заголовка. Но никто из них не работал. My OS is Ubuntu 14.04 Если вам нужна дополнительная информация, просто дайте мне знать.
Спасибо! оно работает. Но я все еще не понимаю, и мне нужно знать, как я могу подключить wxtextctrl (или другой дочерний элемент) с функцией события фокуса, потому что мне нужно это сейчас для другой цели. Как я могу это сделать? –
Самый простой способ - использовать 'Bind()', но вам нужно вызвать его непосредственно в объекте управления текстом, т. Е. 'Text-> Bind (wxEVT_SET_FOCUS, & MyDialog :: OnTextFocus, dialog)'. –
Спасибо. Оно работает! –