3.1 事件驱动编程
当程序员们首次面对苹果公司的第一个图形界面个人电脑的时候,他们为这种和以前所有的经验都不同的电脑操作方法感到惊奇。鼠标指针在一个个的窗口之间移来移去,滚动条,菜单,文本编辑框等等等等,真的很难以想象,这么多让人眼花缭乱的东西,其背后的代码该是多么复杂和不可思议。似乎所有这一切都是以完全并行的方式运行的,虽然这只是一个假象。对于很多人来说,苹果个人电脑是他们对事件驱动编程的第一印象。
所有的GUI程序都是事件驱动的。换句话说,应用程序一直停留在一个循环中,等待着来自用户或者其他地方(比如窗口刷新或网络连接)的事件,一旦收到某种事件,应用程序就将其扔给处理这个事件的函数。虽然看上去不同的窗口是同时被刷新的,但实际上,绝大多数的GUI程序都是单线程的,因此窗口的刷新是依次按顺序进行的。如果由于某种意外你的电脑变得很慢导致窗口刷新的过程变的很明显,你就会注意到这一点。
不同的GUI编程架构用不同的方法将它内部的事件处理机制展现给程序开发者。对于wxWidgets来说,事件表机制是最主要的方法。在下一小节我们会对此进行进一步的解释。