自定义事件实现步骤有如下几步:
1、定义自定义事件id
enum CustomEventId
{
ENUM_CUSTOMEVENT_ID_Id1=7000,
ENUM_CUSTOMEVENT_ID_Id2,
ENUM_CUSTOMEVENT_ID_Id3
};
2、申明自定义事件(.h文件中)
BEGIN_DECLARE_EVENT_TYPES()
DECLARE_EVENT_TYPE(ENUM_CUSTOMEVENT_NAME1, ENUM_CUSTOMEVENT_ID_Id1)
DECLARE_EVENT_TYPE(ENUM_CUSTOMEVENT_NAME2, ENUM_CUSTOMEVENT_ID_Id2)
DECLARE_EVENT_TYPE(ENUM_CUSTOMEVENT_NAME3, ENUM_CUSTOMEVENT_ID_Id3)
END_DECLARE_EVENT_TYPES()
3、定义自定义事件(.cpp文件中)
DEFINE_EVENT_TYPE(ENUM_CUSTOMEVENT_NAME1)
DEFINE_EVENT_TYPE(ENUM_CUSTOMEVENT_NAME2)
DEFINE_EVENT_TYPE(ENUM_CUSTOMEVENT_NAME3)
4、在BEGIN_EVENT_TABLE与END_EVENT_TABLE()添加事件映射
EVT_COMMAND(wxID_ANY, ENUM_CUSTOMEVENT_NAME1, Frame::OnSetName1)
EVT_COMMAND(wxID_ANY, ENUM_CUSTOMEVENT_NAME2, Frame::OnSetName2)
EVT_COMMAND(wxID_ANY, ENUM_CUSTOMEVENT_NAME3, Frame::OnSetName3)
5、在Frame中,申明、实现OnSetName1、OnSetName2、OnSetName3
申明:
void OnSetName1(wxCommandEvent& event);
void OnSetName2(wxCommandEvent& event);
void OnSetName3(wxCommandEvent& event);
实现:代码就不在此列举
6、自定义事件调用
wxCommandEvent eventCustom(ENUM_CUSTOMEVENT_NAME1);
wxPostEvent(this->GetParent()->GetEventHandler(), eventCustom); //子窗口
如果是当前窗口可以写成
wxPostEvent(this->GetEventHandler(), eventCustom);