wxSpinCtrl не генерирует события - PullRequest
0 голосов
/ 01 февраля 2012

Я создал класс под названием ValCtrl, который расширяет wxPanel. Каждый экземпляр управляет wxCheckBox, wxSlider и wxSpinCtrl. Я динамически связываю события с методами в ValCtrl.

Работа с событиями wxSlider и wxCheckBox работает, но я сделал что-то не так с wxSpinCtrl, и мои обработчики не вызываются. Программа компилируется и запускается, и я не нашел достаточной помощи в документации. Есть идеи?

Вот мои экземпляры:

linkCheckBox = new wxCheckBox(this, wxID_ANY, stim->name, wxPoint(-1,-1), wxSize(linkCheckBoxSX, defaultS));

slider = new wxSlider(this, wxID_ANY, 0, 0, 100, wxPoint(-1,-1), wxSize(sliderSX, sliderSY), wxSL_HORIZONTAL);
slider->SetRange(stim->minValue, stim->maxValue);
slider->SetValue(stim->value);

spinCtrl = new wxSpinCtrl(this, wxID_ANY, "0", wxPoint(-1,-1), wxSize(spinCtrlSX, spinCtrlSY));
spinCtrl->SetRange(stim->minValue, stim->maxValue);
spinCtrl->SetValue(stim->value);

Вот мои связи:

slider->Bind(wxEVT_SCROLL_THUMBTRACK, &ValCtrl::OnScroll, this);
slider->Bind(wxEVT_SCROLL_CHANGED, &ValCtrl::OnScroll, this);
spinCtrl->Bind(wxEVT_SPIN, &ValCtrl::OnSpin, this);
spinCtrl->Bind(wxEVT_COMMAND_TEXT_ENTER, &ValCtrl::OnEntered, this);
linkCheckBox->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &ValCtrl::OnCheck, this);

Вот мои объявления метода обработчика:

void OnCheck(wxCommandEvent& event);
void OnEntered(wxCommandEvent& event);
void OnScroll(wxScrollEvent& event);
void OnSpin(wxSpinEvent& event);

1 Ответ

3 голосов
/ 01 февраля 2012

Прочитать заголовки и найти wxEVT_COMMAND_SPINCTRL_UPDATED.Я использую 2.9, который, видимо, изменил способ отправки и захвата событий wxSpinCtrl, начиная с 2.8.

Работает сейчас.Ниже приведена поправка для любой другой любопытной стороны.

spinCtrl->Bind(wxEVT_SPIN, &ValCtrl::OnSpin, this);
spinCtrl->Bind(wxEVT_COMMAND_TEXT_ENTER, &ValCtrl::OnEntered, this);

превращается в:

spinCtrl->Bind(wxEVT_COMMAND_SPINCTRL_UPDATED, &ValCtrl::OnSpin, this);
...