首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >信息地图的一个解释

问信息地图的一个解释
EN

Stack Overflow用户
提问于 2018-03-20 11:58:16
回答 2查看 1.4K关注 0票数 1

我来自C#背景,正在调试一些遗留的C++代码。我的谷歌技能让我失望了,或者我对结果的理解不足,但是谁能简单解释一下信息地图是用来做什么的呢?非常感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-20 12:07:40

本机Win32 API通过消息传递工作。特别是,应用程序有一个或偶尔多个消息队列。它使用GetMessage()检索消息。每条消息都有一个类型。

在旧代码中,消息处理代码以switch(msg.message)开始。这个开关语句并不能很好地满足MFC预期的灵活性,它用消息映射代替了switch语句,但两者的基本目的是相同的:将每种消息类型分配给适当的处理程序。

票数 2
EN

Stack Overflow用户

发布于 2018-03-20 12:10:21

主要原因是虚拟函数无法轻松地将消息id映射到您编写的函数中,可能是与控件id相结合,也可能是与特定命令id相结合。

经典的Win32代码向我们展示了一个具有大开关大小写块的窗口过程(WinProc)。它们再次分离为用于WM_COMMAND消息的交换用例块。

有了消息映射,就不会出现用于虚拟函数的大型映射的代码膨胀。此外,消息映射允许MFC代码查看是否可以处理消息。

此外,当新消息应该包含到消息传递系统中时,它们允许轻松扩展。

MFC的文档有一个简略解释。

在Windows的传统程序中,Windows消息在窗口过程中以大开关语句进行处理。MFC使用消息映射将直接消息映射到不同的类成员函数。为此目的,消息映射比虚拟函数更有效,它们允许由最合适的C++对象处理消息--应用程序、文档、视图等等。您可以映射单个消息或一系列消息、命令ID或控制ID。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49383622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档