wxWidgets教程(2) 事件處理

2021-07-11 06:25:04 字數 2169 閱讀 2518

wxwidgets是事件驅動的,使用下面的巨集

declare_event_table()//宣告乙個事件巨集

enum idlist

;begin_event_table(mywxframe, wxframe)

evt_button(id_btn_1,mywxframe::ontips)//將按鈕與函式繫結

end_event_table()

只有wxcommandevent事件才可以層層遞迴到父視窗的事件表中

以下的事件不會傳遞到其父視窗,因為他們傳給父視窗沒有什麼意義

wxactivate, 

wxcloseevent,

wxeraseevent,

wxfocusevent,

wxkeyevent,

wxidleevent,

wxinitdialogevent,

wxjoystickevent,

wxmenuevent,

wxmouseevent,

wxmoveevent,

wxpaintevent,

wxquerylayoutinfoevent,

wxsizeevent,

wxscrollwinevent,

wxsyscolourchangedevent

舉例攔截乙個鍵盤事件,只有拼音字母才可以響應,**如下

evt_key_down(mywxframe::onchar)

void mywxframe::onchar(wxkeyevent& event)

}

event.skip();用來過濾。表示事件將會向父視窗傳遞,這裡不要呼叫父視窗的函式,而是使用event的函式。

connect(m_button1->getid(), wxevt_command_button_clicked, 

(wxobjecteventfunction)&mywxframe::ontips);

connect(m_button1->getid(), wxevt_command_button_clicked, 

wxcommandeventhandler(mywxframe::ontips));

以上2種方法繫結事件,應該比較好理解

如果事件處理的引數是wxxyzevent,那麼相應的它的事件處理函式的型別就是wxxyzeventhandler。

動態終止事件繫結

disconnect(m_button1->getid(), wxevt_command_button_clicked, 

wxcommandeventhandler(mywxframe::ontips));

如果想使用系統自己定義的話,使用wxid_any,如下:

m_button1 = new wxbutton(this, wxid_any, wxt("提示"), wxdefaultposition, wxdefaultsize, 0);

如果想自己定義,則使用(wxid_lowest,wxid_highest)左側與右側區域,如下

enum idlist

;

(wxid_lowest,wxid_highest)中間的數值是系統自己定義的識別符號,一般不要更改。如:

wxid_ok

確定wxid_cancel

取消wxid_static

靜態文字識別符號

wxid_exit

退出選單識別符號

wxid_open

開啟識別符號

在event.h中,wxwidgets定義了一些常用的事件標識,右鍵轉到定義即可看到

evt_size,evt_close,evt_paint,evt_nc_paint,evt_char

evt_key_down,evt_key_up,evt_hotkey,evt_kill_focus

evt_left_down,evt_left_dclick……

比較多,就不一 一介紹了。

我們也可以自己定義一些事件,可以看一看教程第3章中的介紹。

wxWidgets 自定義事件觸發

其步驟如下 define id refresh task list 9000 定義事件id wxdefine event evt refresh task list,wxcommandevent 定義事件處理巨集 evt command id refresh task list,evt refres...

wxWidgets教程(11) App與程序管理

onexit 程式結束呼叫。processpendingevents queueevent與addpendingevent傳送的事件,由此呼叫處理。onassertfailure wxassert判斷失敗會呼叫。很多函式不太常用。二 事件wxevthandler 1 connect disconne...

C 事件 委託 教程

c 中的 事件 是當物件發生某些有趣的事情時,類向該類的客戶提供通知的一種方法。事件最常見的用途是用於圖形使用者介面 通常,表示介面中的控制項的類具有一些事件,當使用者對控制項進行某些操作 如單擊某個按鈕 時,將通知這些事件。但是事件未必只用於圖形介面。事件為物件提供一種通常很有用的方法來發出訊號表...