“事件”与“消息”异同

一。Windows程序设计方法与MS-DOS程序设计的不同就在于Windows程序是事件驱动的。事件驱动的程序是由事件发生来控制。事件驱动的程序设计以一种非顺序的方式处理事件,从而回避了顺序的、过程驱动的方法。  
   
    事件的含义比较广泛,比较常见的例如:鼠标事件,他包含鼠标移动、鼠标点击、鼠标位于窗口的位置等。而应用程序打开后,在那里静静地等待,等待各种事件发生,然后进行相应的处理,执行特定的功能。事件也可以由用户来定义,例如:某段程序处理完毕也可以作为一个事件。  
   
    事件驱动程序设计是围绕着消息的产生与处理而展开的。一条消息是关于发生事件的信息。例如:一个键或鼠标按钮被按下,就发生一个消息;而当松开时,另一个消息又发生了。做为一个程序员,你的应用程序主要是对个种消息进行处理。应用程序的执行顺序也是无法预知的,而且消息的产生也不仅仅来源于键盘和鼠标的,消息可由应用程序本身产生,也可由运行的其它应用程序产生,还可以由用户或Windows产生,每当事件发生时,Windows做出记录并将相应的消息分配到有关的应用程序中去。  

二。事件是一个动作——用户触发的动作。  
  消息是一个信息——传递给系统的信息。  
   
  事件与消息的概念在计算机中较易混淆,但本质不同:  
   
  事件由用户(操作电脑的人)触发且只能由用户触发,操作系统能够感觉到由用户触发的事件,并将此事件转换为一个(特定的)消息发送到程序的消息队列中。  
   
  这里强调的是:  
  可以说“用户触发了一个事件”,而不能说“用户触发了一个消息”。  
  用户只能触发事件,而事件只能由用户触发。  
  一个事件产生后,将被操作系统转换为一个消息,所以一个消息可能是由一个事件转换而来(或者由操作系统产生)。  
  一个消息可能会产生另一个消息,但一个消息决不能产生一个事件——时间只能由用户触发。  
   
  总结(事件,消息的来源):  
  事件:只能由用户通过外设的输入产生。  
  消息:(产生消息的来源有三个)  
  (1)   由操作系统产生。  
  (2)   由用户触发的事件转换而来。  
  (3)   由另一个消息产生。

三。我们通常说:“某一件事发生了”和“向什么发送某一个消息”。比如在桌面上单击鼠标时,某一件事发生了,Windows首先知道这件事的发生,然后使用函数SendMessage向桌面发送一个消息,证明有某件事发生了。这就是“事件驱动、消息处理”的原理。

http://topic.csdn.net/t/20021015/16/1099048.html

你可能感兴趣的:(事件)