2012-02-01 52 views
0

我创建了一个名为ValCtrl类,它扩展wxPanel。每个实例管理一个wxCheckBox,一个wxSlider和一个wxSpinCtrl。我将事件动态绑定到ValCtrl中的方法。wxSpinCtrl不产生事件

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); 

回答

2

阅读了头,发现wxEVT_COMMAND_SPINCTRL_UPDATED。我使用了2.9,它显然改变了自2.8以来wxSpinCtrl事件如何分派和捕获。

现在就工作。其他任何好奇派对的更正都在下面。

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);