定義 |
class yfDoubleEventButton : public wxButton { public: yfDoubleEventButton(wxWindow* parent, wxWindowID id, const wxString& label = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = "button"); private: void OnButtonDown(wxMouseEvent& event); void OnButtonUp(wxMouseEvent& event); DECLARE_EVENT_TABLE() }; |
実装 |
yfDoubleEventButton::yfDoubleEventButton( wxWindow* parent, wxWindowID id, const wxString& label, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name ) : wxButton(parent, id, label, pos, size, style, validator, name) { } BEGIN_EVENT_TABLE(yfDoubleEventButton, wxButton) EVT_LEFT_DOWN(yfDoubleEventButton::OnButtonDown) EVT_LEFT_UP(yfDoubleEventButton::OnButtonUp) END_EVENT_TABLE() void yfDoubleEventButton::OnButtonDown(wxMouseEvent& event) { event.Skip(); } void yfDoubleEventButton::OnButtonUp(wxMouseEvent& event) { event.Skip(); } |
void yfDoubleEventButton::OnButtonDown(wxMouseEvent& event) { if( m_downEvent && GetParent() ){ wxCommandEvent newEvent(m_downEvent, GetId()); GetParent()->ProcessEvent(newEvent); } event.Skip(); } |
DECLARE_EVENT_TYPE(EVT_TONE_BUTTON_DOWN, -1) DEFINE_EVENT_TYPE(EVT_TONE_BUTTON_DOWN) BEGIN_EVENT_TABLE(yfMIDIKeyboardPanel, wxPanel) EVT_COMMAND_RANGE(IDC_C2_BUTTON, IDC_B4_BUTTON, EVT_TONE_BUTTON_DOWN, yfMIDIKeyboardPanel::OnToneButtonDown) END_EVENT_TABLE() void yfMIDIKeyboardPanel::OnToneButtonDown(wxCommandEvent& event) { //処理は省略 } |