自定義事件實現步驟有如下幾步:
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);