你看过 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 )
(顺便说一句,使用带有 bind() 方法的 wxWidgets v2.9 被认为比事件表更可取。既然您似乎对事件表感到困惑,为什么不跳过学习它们并直接转到 v2.9?)