什么是事件 table (wxWidgets)?

What is an event table (wxWidgets)?

事件 table 到底是什么,它有什么作用?我问的是关于 wxWidgets 的问题,但它可能是一个通用的 GUI 编程概念,所以请纠正我。

一个事件table告诉wxWidgets将事件映射到成员函数。它应该在 .cpp 文件中定义。

wxBEGIN_EVENT_TABLE() 

是一个宏的例子

为简单起见,事件 table 告诉在哪个事件发生时调用哪个函数。

但是,这是一种将事件映射到函数的旧方法。 它不再被推荐,因为它不是很灵活,并且使用宏技巧来完成它的工作。 宏本身在 C++ 中通常不是很推荐。

除非您必须坚持使用 C++03,否则不应再使用事件 tables。 相反,您应该为 C++11 或更高版本中的新 WXWidgets 项目使用 bind 方法。 绑定更灵活,不用宏

您也可以在 WXWidgets 教程中找到此建议。 不过,您必须仍然能够阅读和理解旧事件 tables,因为许多示例已经很久没有更新了。

除了其他答案之外,我想说的是,如果您开始学习 wxWidgets,您应该知道事件表是处理事件的传统方式,而使用 Bind() 是在新代码中执行此操作的首选方法。

特别是,Bind() 没有那么“神奇”,并且不使用任何宏。