自定義消息處理
(不知道在wxpython,wxruby如何自定義類型消息?
最好裝個wxpython,在其demo現場編寫現場查看結果)
步驟如下:
1.在宏里處理如下:
a.
BEGIN_DECLARE_EVENT_TYPES()
DECLARE_EVENT_TYPE(wxEVT_MYCOMMAND, xxxx)
END_DECLARE_EVENT_TYPES()
xxxx 為自定義數字,不過翻到wxwidget內部,其宏定義中該value好像
沒用!(...)
b. 定義wxEvT_MYCOMMAND 標識
DEFINE_EVENT_TYPE(wxEVT_MYMYCOMMAND)
c. 定義宏EVT_MYCOMMAND
格式中把自定義標識改為自己即可.拷貝.
#define EVT_MYCOMMAND(id, fn) \
DECLARE_EVENT_TABLE_ENTRY( \
wxEVT_MYCOMMAND, id, wxID_ANY, \
(wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent( wxCommandEventFunction, &fn ), \
(wxObject *) NULL \
),
2.在BEGIN_EVENT_TABLE表中自定義映射.
EVT_MY_CUSTOM_COMMAND(wxID_ANY, MyFrame::OnMyfunction)
3.處理投遞
自定義消息發送,this 一般是接受消息handler,也可其它wxEvtHandler.
wxCommandEvent myEvent(wxEVT_MY_CUSTOM_COMMAND);
wxPostEvent(this, myEvent);
4.自定義消息處理函數
必須符合wxCommandEventFunction格式,既為如下:
void OnMyfunction(wxCommandEvent& event);