MFC - 控件的消息和控件的事件(命令)有什么区别?
MFC的控件都能添加事件处理程序(类向导称事件为命令)
控件的消息和控件的**事件(命令)**有什么区别?
-
事件可能由多个消息组成,事件是消息的封装。控件的事件也是通过消息机制来处理的,所以这两者在
本质上是一样的。函数本身没什么太大区别只不过函数的调用过程有区别。 -
事件是由用户给出的,即用户触发一个事件传给操作系统由操作系统将事件解释成一条消息。事件可以产生消息
,操作系统也可以产生消息,消息有可能会产生其他的消息但是消息不能产生事件,事件只能由用户触发。
如:消息A 是某个控件触发了个事件B产生的,比如说在一个列表上鼠标点击一下,触发了一个点击的事件(命令),
那么他就会往消息队列里发送一个点击消息。这个就是鼠标单击响应的消息BN_CLICKED。 -
如果已经为控件添加了命令消息响应函数(消息为BN_CLICKED),则通过双击控件添加处理函数不再添加
新的处理函数,也不能右键添加新的事件处理程序函数(因为已有),这揭示了MFC中消息和事件的统一性。 -
通过双击控件的方式和通过右键添加事件处理程序产生的函数函数名相同,但通过类向导命令模块添加
的命令消息响应函数的函数名与前面两种方式添加的处理函数的函数名不一样(当然,使用前两种方式任一
一种方式添加处理函数后,则类向导方式不能添加)
总结:命令与消息的区别为 控件的命令(事件)是用户操作触发的消息。