消息与事件间有什么关系,有何区别?
混淆,搜索之,以下列举靠谱结果。
事件(动作)
消息(动作的相关信息或其他)
事件常被系统转换为(特定的)消息,但并不是所有消息都代表了事件。
事件是一个动作——用户触发的动作。
消息是一个信息——传递给系统的信息。
事件由用户(操作电脑的人)触发且只能由用户触发,操作系统能够感觉到由用户触发的事件,并将此事件转换为一个(特定的)消息发送到程序的消息队列中。
这里强调的是:
可以说“用户触发了一个事件”,而不能说“用户触发了一个消息”。
用户只能触发事件,而事件只能由用户触发。
一个事件产生后,将被操作系统转换为一个消息,所以一个消息可能是由一个事件转换而来(或者由操作系统产生)。
一个消息可能会产生另一个消息,但一个消息决不能产生一个事件——时间只能由用户触发。
总结:
事件:只能由用户通过外设的输入产生。
消息:(产生消息的来源有三个)
(1) 由操作系统产生。
(2) 由用户触发的事件转换而来。
(3) 由另一个消息产生。
1.http://topic.csdn.net/u/20080723/12/32e2f082-6b63-48e6-bdf4-2ebba4cff9e9.html
- 消息驱动,响应事件,然后完成功能,所以,就要通过消息决定所有逻辑分支操作,添加事件去处理这些问题;
- event一般用在线程或进程的同步,可以使用WaitSingleObject来等待。
message一般用在窗口,线程,进程之间的数据传递,使用sendmessage, postmessage,sendmessagetimeout来
2.http://www.embed.com.cn/bbs/dispbbs.asp?boardID=10&ID=339
- 消息是具有管理队列的,往往用于线程间的数据交换;事件则依赖硬件的触发。2者相同处是都可以阻塞线程,节省CPU负荷