您看过 wxWidgets 发行版附带的示例程序吗?他们有很多示例向您展示如何做各种事情
例如,控件示例有这个事件表:
BEGIN_EVENT_TABLE(MyPanel, wxPanel)
EVT_IDLE ( MyPanel::OnIdle)
EVT_BOOKCTRL_PAGE_CHANGING(ID_BOOK, MyPanel::OnPageChanging)
EVT_BOOKCTRL_PAGE_CHANGED(ID_BOOK, MyPanel::OnPageChanged)
EVT_LISTBOX (ID_LISTBOX, MyPanel::OnListBox)
EVT_LISTBOX (ID_LISTBOX_SORTED, MyPanel::OnListBox)
EVT_LISTBOX_DCLICK(ID_LISTBOX, MyPanel::OnListBoxDoubleClick)
EVT_BUTTON (ID_LISTBOX_SEL_NUM, MyPanel::OnListBoxButtons)
EVT_BUTTON (ID_LISTBOX_SEL_STR, MyPanel::OnListBoxButtons)
EVT_BUTTON (ID_LISTBOX_CLEAR, MyPanel::OnListBoxButtons)
EVT_BUTTON (ID_LISTBOX_APPEND, MyPanel::OnListBoxButtons)
EVT_BUTTON (ID_LISTBOX_DELETE, MyPanel::OnListBoxButtons)
EVT_BUTTON (ID_LISTBOX_FONT, MyPanel::OnListBoxButtons)
...
这表明当用户点击例如ID_LISTBOX_CLEAR 按钮,面板方法 MyPanel::OnListBoxButtons() 被调用。
通常,您可以通过指定事件、控件 ID 和要连接在一起的方法来调用任何类的任何方法。
“请注意,宏的第二个参数(例如 MyFrame::OnButton1)必须始终是 BEGIN_EVENT_TABLE 的第一个参数中指定的类的成员。” http://wiki.wxwidgets.org/Events#Event_Tables
所以,如果你想在控件 D 上发生事件 E 时调用 C 类的方法 M,你可以这样写
BEGIN_EVENT_TABLE( C ... )
E ( D C:M )
(顺便说一句,使用 wxWidgets v2.9 和 bind() 方法被认为比事件表更可取。既然您似乎对事件表感到困惑,为什么不跳过学习它们并直接转到 v2.9?)