from
http://www.cppblog.com/kenlistian/archive/2009/02/06/73096.html
略有修改
自定义消息处理
(不知道在wxpython,wxruby如何自定义类型消息?
最好装个wxpython,在其demo现场编写现场查看结果)
步骤如下:
1.在宏里处理如下:
a.
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
BEGIN_DECLARE_EVENT_TYPES()
DECLARE_EVENT_TYPE(wxEVT_MYCOMMAND, xxxx)
END_DECLARE_EVENT_TYPES()
xxxx 为自定义数字,不过翻到wxwidget内部,其宏定义中该value好像
没用!(...)
b. 定义wxEvT_MYCOMMAND 标识
DEFINE_EVENT_TYPE(wxEVT_MYCOMMAND)
c. 定义宏EVT_MYCOMMAND
格式中把自定义标识改为自己即可.拷贝.
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#define EVT_MY_CUSTOM_COMMAND(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_MYCOMMAND, id, wxID_ANY, (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent( wxCommandEventFunction, &fn ), (wxObject *) NULL ),
2.在BEGIN_EVENT_TABLE表中自定义映射.
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
EVT_MY_CUSTOM_COMMAND(wxID_ANY, MyFrame::OnMyfunction)
3.处理投递
自定义消息发送,this 一般是接受消息handler,也可其它wxEvtHandler.
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
wxCommandEvent myEvent(wxEVT_MY_CUSTOM_COMMAND); wxPostEvent(this, myEvent);
4.自定义消息处理函数
必须符合wxCommandEventFunction格式,既为如下:
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
void OnMyfunction(wxCommandEvent& event);