wxWidgets-事件处理


1.wxEvtHanlder

2.事件处理函数

3.DECLARE_EVENT_TABLE

4.BEGIN_EVENT_TABLE

END_EVENT_TABLE

5.定义事件宏


MyFrame:public wxFrame{

1.void OnSize(wxSizeEvent& e);

2.void onButtonOK(wxCommandEvent& e);

private:

DECLARE_EVENT_TABLE()

}


wxButton* btn=new wxButton(this,wxID_OK,wxT("OK"),wxPoint(200,200);


BEGIN_EVENT_TABLE(MyFrame,wxFrame)

EVT_BUTTON(wxID_OK,MyFrame::OnButtonOK)

EVT_SIZE(..

END_EVENT_TABLE()


事件处理会在窗口控件的继承关系或者 类继承关系中搜索。


wxCommandEvent事件创建,包含标识符 wxID_OK,wxEVT_COMMAND_BUTTON_CLICKED,

wxEvtHandler::ProcessEvent 匹配


wxKeyEvent& - Skip() - 正常处理

wxBell() - 不会继续匹配事件


wxWindow::PushEventHandler

wxWindow::PopEventHandler

wxWindow::GetEventHandler 

----???---p58


动态事件处理方法:

wxEvtHandler::Connect

wxEvtHandler::Disconnect - 不需要手动,窗口释放时自动调用


动态映射放在 OnInit函数中:

frame -> Connect(wxID_EXIT,wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(MyFrame::OnQuit));

..

frame->Disconnect(wxID_EXIT,wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(MyFrame::OnQuit));


窗口标识符:

只需要在固定上下文唯一

wxID_ANY 自动生成,不需要事件处理


自定义事件: - 没看懂 p67

wxEVT_FONT_SELECTION_CHANGED(id,func)



class wxCustomEvent : public wxNotifyEvent

{

public:

wxCustomEvent(wxEventType commandType==wxEvent_NULL,int id=0):wxNotifyEvent(commandType,id){}

wxCustomEvent(const wxCustomEvent& event):wxNotifyEvent(event){}

virtual wxEvent *Clone() const{return new wxCustomEvent(*this);}

DECLARE_DYNAMIC_CLASS(wxCustomEvent);

}


typeof void (wxEvtHandler::*wxCustomEvent)(wxCustomEvent&);









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值