wxWidgets系列之自定义事件实现、调用6步曲

wxWidgets系列之自定义事件实现、调用6步曲

自定义事件实现步骤有如下几步:

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);

你可能感兴趣的:(wxWidgets系列之自定义事件实现、调用6步曲)