从我们常用的电脑操作到事件驱动模型

拿我们经常使用的电脑打比方

  • Windows 的工作机制简单地说就是三个关键的概念:窗口、事件和消息<User 通过在窗口进行各种操作从而触发事件,该事件就会向操作系统发送相应的操作消息>。
  • 不妨简单地将窗口看做带有边界的矩形区域。也许已经了解几种不同类型的窗口:如,“资源管理器”窗口、文字处理程序中的文档窗口etc.除了这些最普通的窗口外,实际上还有许多其它类型的窗口。命令按钮是一个窗口,图标、文本框、选项按钮和菜单条也都是窗口。
  • Microsoft Windows 操作系统通过给每一个窗口指定一个唯一的标识号(窗口句柄或
    hwnd)来管理所有的窗口。操作系统连续地监视每一个窗口的活动或事件的信号。事件可以通过诸如单击鼠标或按下按键的操作而产生,也可以通过程序的控制而产生,甚至可以由另一个窗口的操作而产生。
  • 例如,窗口每发生一次事件,将引发一条消息发送至操作系统。操作系统处理该消息并广播给其它窗口。然后,每一个窗口才能根据自身处理该条消息的指令而采取适当的操作(例如,当窗口置顶时,其他窗口收到消息后相应的把自身的部分窗口隐藏)。

言归正传

  • 在面向过程的应用程序中,应用程序控制了代码执行的先后顺序
    在事件驱动的应用程序中,代码不是按照预定的路径执行,而是在 响应不同的事件 时,执行不同的代码片段。事件可以由用户操作触发、也可以由来自操作系统或其它应用程序的消息触发、甚至由应用程序本身的消息触发。这些事件的顺序决定了代码执行的顺序
  • 因为事件的顺序是无法预测的,所以在代码中必须对执行时的“各种状态”作一定的假设。当作出某些假设时(例如,假设在处理某一输入字段的过程之前,该输入字段必须包含确定的值),应该组织好应用程序的结构,以确保该假设始终有效(例如,在输入字段中有值之前,禁止点击确定按钮)。
  • 在执行中代码也可以触发事件。例如,在程序中改变文本框中的文本,将引发文本框的 Change 事件。如果 Change 事件中包含有代码,则将导致该代码的执行。如果原来假设该事件仅能由用户的交互操作所触发,则可能会产生意料之外的结果。

巨人的肩膀

windows的三个重要概念
事件驱动模型

猜你喜欢

转载自blog.csdn.net/sinat_40701582/article/details/106431750