我刚开始学习使用C ++的wxWidgets 3.0版。我已经注意到,wxWidgets中的事件处理是由Event表完成的。但是一个教程也提到了Connect() - 实际上它只是说:“本教程将使用事件表,而不是Connect()”。
我想知道,事件表和Connect()背后的理念是什么?有什么区别,什么时候比另一个更合适......谢谢。
答案 0 :(得分:14)
首先,不要使用被Bind()取代的Connect()
,这种方法在各个方面都更好。
其次,静态(使用事件表)和动态(使用Bind()
)处理事件的方法都可以工作,您可以使用任何您喜欢的方法。就个人而言,我建议使用Bind()
,因为
事件表的主要优点是
Bind()
上开了15年。然而,它们使用起来比较笨拙,因为它们需要子类化(从中派生一个新类)以处理其中的非命令事件,并且它们在编译时不会检测到所有错误,从而允许您编写代码编译好但在运行时崩溃。