MFC 消息映射原理是什么?
3个回答
展开全部
消息映射就是建立一个消息和函数的对应表,当收到消息时查找表,如果表中有相应的消息,就将消息交给相应的函数处理。
通俗点讲,消息映射表就是一个记录了消息号和相应处理函数的数组。当然表中还有其他信息,这里先说矛盾的主要方面了。其中消息映射表中的每个元素都是一个结构体变量,他的成员很多,最主要的就是消息号和相对应的消息处理函数。
关于消息映射表的查找,是通过虚函数实现的,通过父类的虚函数查找父类及其层层子类定义的消息映射表。如果找不到,就交给默认的窗口处理函数处理。 如果一个类的消息映射表中定义了一个消息处理,那么就不再继续查找子类或者子类的子类,从而实现了覆盖
通俗点讲,消息映射表就是一个记录了消息号和相应处理函数的数组。当然表中还有其他信息,这里先说矛盾的主要方面了。其中消息映射表中的每个元素都是一个结构体变量,他的成员很多,最主要的就是消息号和相对应的消息处理函数。
关于消息映射表的查找,是通过虚函数实现的,通过父类的虚函数查找父类及其层层子类定义的消息映射表。如果找不到,就交给默认的窗口处理函数处理。 如果一个类的消息映射表中定义了一个消息处理,那么就不再继续查找子类或者子类的子类,从而实现了覆盖
追问
消息是怎么得到的? 比如菜单上有个按钮 点击他会产生一个消息,这个消息是怎么得到的?昨天面试被问到了...
展开全部
由操作系统得到按键消息,将消息放到消息队列里面,应用程序从消息队列里取出消息,查找消息映射表,找到对应的处理函数进行处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的按钮点击时,他发送一个消息给后台,后台有一个死循环在后台监视,有消息就放入消息队列并翻译,处理(就是运行buttonClick方法的代码)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询