永发信息网

什么是消息映射

答案:2  悬赏:50  手机版
解决时间 2021-12-25 11:57
什么是消息映射
最佳答案
问题一:什么是消息映射?它的作用是什么? 消息映射简单来说 就是一张表, 範面有两列,一列是 “消息”名称,另一列是 “处理函数”名字。
它的作用是,当 甲事件发生,消息甲 到达,查映射表,找出 消息甲 对应的 处理函数,
调用 此 处理函数处理。
其它 事件发生,有相应消息到达,查映射表,找出处理函数,处理。例如下面就是一张CXxxView 里的 消息(MESSAGE)映射(MAP)表:
BEGIN_MESSAGE_MAP(CXxxView, CScrollView) // 映射表开始
//
AFX_MSG_MAP(CXxxView)
ON_COMMAND(ID_VIEW_SCALE, OnViewScale)
ON_COMMAND(ID_VIEW_CHOSE_CH, OnViewChoseCh)
ON_COMMAND(ID_VIEW_SETAXES, OnViewSetaxes)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
END_MESSAGE_MAP() // 映射表结束
---
ID_VIEW_SCALE,ID_VIEW_CHOSE_CH,ID_FILE_PRINT 等都是消息,都是揿了不同对话框的 OK 钮 产生的 消息。OnViewScale,CScrollView::OnFilePrint 等都是处理函数名字。
详细的处理函数 写在 CXxxView里。
---
事件驱动程序,主程序里有个总循环,不断检查事件是否发生,一旦发生就查映射表,调处理函数处理,处理完,清掉这条消息,再回总循环。直到收到结束通知。问题二:在mfc中什么是消息映射表? BEGIN_MESSAGE_MAP(CCH372_CPlusDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDCANCEL, &CCH372_CPlusDlg::OnBnClickedCancel)
ON_WM_ERASEBKGND()
END_MESSAGE_MAP()
这样就是一个工程叫CCH372_CPlusDlg的消息映射表,它以BEGIN_MESSAGE_MAP开始,END_MESSAGE_MAP()结尾,你在工程的.cpp文件中能找到。
//}}AFX_MSG_MAP这句话上面的是系统自动加的,它下面的代码是人工或是用classwizard添加的
ON_BN_CLICKED(IDCANCEL, &CCH372_CPlusDlg::OnBnClickedCancel)
看这个消息映射,BN是button,消息类型为按钮单击,按钮ID:IDCANCEL,消息响应:OnBnClickedCance
ON_WM_ERASEBKGND()
WM是window message,一个窗口消息,这个消息是WM_ERASEBKGND,这种消息它的消息响应函数的名字是特定的,所以在这不用以显视的形式给出问题三:菜单的映射消息分为哪几类?作用是什么 消息映射简单来说 就是一张表, 上面有两列,一列是 “消息”名称,另一列是 “处理函数”名字。 它的作用是,当 甲事件发生,消息甲 到达,查映射表,找出 消息甲 对应的 处理函数, 调用 此 处理函数处理。 其它 事件发生,有相应消息到达,查映射...问题四:消息映射和消息回调有什么区别 消息映射是把消息与回调函数关联起来
例如ON_COMMAND(id_DataAccess, OnDataAccess)
它会告诉系统消息的产生者是id_DataAccess,消息的类型是COMMAND,消耿的回调函数是OnDataAccess
消息回调就是调用回调函数,MFC响应消息的机制都是以回调函数的形式进行的,这就要求你在定制消息时有几步必需做的步骤
1.定义消息
2.消息映射
3.消息响应声明
4.消息响应函数的实现
消息响应就是回调函数,这些在孙鑫老师的视频中都有提到问题五:MFC的消息映射有什么作用 消息映射简单来说 就是一张表, 上面有两列,一列是 “消息”名称,另一列是 “处理函数”名字。
它的作用是,当 甲事件发生,消息甲 到达,查映射表,找出 消息甲 对应的 处理函数,
调用 此 处理函数处理。
其它 事件发生,有相应消息到达,查映射表,找出处理函数,处理。例如下面就是一张CXxxView 里的 消息(MESSAGE)映射(MAP)表:
BEGIN_MESSAGE_MAP(CXxxView, CScrollView) // 映射表开始
//
AFX_MSG_MAP(CXxxView)
ON_COMMAND(ID_VIEW_SCALE, OnViewScale)
ON_COMMAND(ID_VIEW_CHOSE_CH, OnViewChoseCh)问题六:菜单的映射消息分为哪几类?作用是什么意思? 两类,
一类是 COMMAND消息,也就是点击消息
一类是UPDATE消息,更新菜单状态的问题七:写出消息映射,类型识别,类的动态创建的思想 实体框架生成一个从ObjectContext派生的类,该类表示概念模型中的实体容器。(该派生类的名称即是概念模型文件中的EntityContainer的名称。)该类公开SaveChanges方法,该方法触发对基础数据库的更新。这些更新操作可以使用系统自动生成的SQL语句(默认),也可以使用开发人员所指定的存储过程。无论是否使用存储过程来更新数据库,用于创建、更新和删除实体的应用程序代码都是一样的。注意:如果没有将实体类型的插入、更新或删除这三种操作全部映射到存储过程,则在运行时执行的情况下未映射的操作将失败且会引发UpdateException。下面的过程假定您已在实体设计器中打开一个.edmx文件。将插入操作映射到存储过程将插入操作映射到存储过程在实体设计器图面上或在“模型浏览器”窗口中,右击要映射插入操作的实体类型,然后选择“存储过程映射”。此时将出现“映射详细信息”窗口的“将实体映射到函数”视图。单击“”。在下拉列表中选择插入操作要映射到的存储过程。窗口中填充的是实体属性与存储过程参数之间的默认映射。通过单击相应属性字段并从下拉列表中选择适当属性,修改每个存储过程参数对应的映射。注意:所有实体键都必须具有映射。如果存储过程使用INSERT语句,则实体键通常映射到插入新行时创建的主键。下面几个步骤介绍如何将存储过程返回的数据映射到实体属性。单击“”。该字段即变为可编辑状态。键入包含存储过程返回的数据的参数名称。单击对应于参数名称的属性字段。该字段将变成一个下拉属性列表。选择返回的数据要映射到的属性。注意:对于整数值输出参数,“受影响的行数参数”复选框处于启用状态。如果在调用插入操作时针对某参数选中该复选框且返回的值为零,将引发OptimisticConcurrencyException。对每个返回值和未映射属性重复步骤5到8。现在,所选实体类型的插入操作已映射到存储过程。将更新操作映射到存储过程将更新操作映射到存储过程在实体设计器图面上或在“模型浏览器”窗口中,右击要映射插入操作的实体类型,然后选择“存储过程映射”。此时将出现“映射详细信息”窗口的“将实体映射到函数”视图。单击“”。在下拉列表中选择更新操作要映射到的存储过程。窗口中填充的是实体属性与存储过程参数之间的默认映射。通过单击相应属性字段并从下拉列表中选择适当属性,修改每个存储过程参数对应的映射。对于每个属性,都可以选中在“使用原始值”[UseOriginalValue]列中的复选框。通过“使用原始值”[UseOriginalValue]选项,可以使用并发控制。如果选中某个属性的“使用原始值”[UseOriginalValue]选项,则从数据库读取的该属性的值将传递给指定的存储过程参数。请注意,属性的原始值和当前值都可以传递给不同的参数。注意:映射更新操作时,可以将存储过程返回的数据映射到实体属性。下面几个步骤介绍如何将存储过程返回的数据映射到实体属性。单击“”。该字段即变为可编辑状态。键入包含存储过程返回的数据的参数名称。单击对应于参数名称的属性字段。在下拉列表中选择返回的数据要映射到的属性。注意:对于整数值输出参数,“受影响的行数参数”复选框处于启用状态。如果在调用更新操作时针对某参数选中该复选框且返回的值为零,将引发OptimisticConcurrencyException。可以选择对每个返回值重复步骤6到9。现在,所选实体类型的更新操作已映射到存储过程。将删除操作映射到存储过程将删除操作映射到存储过程在实体设计器图面上或在“模型浏览器”窗口中,右击要映射......余下全文>>问题八:在C++中的消息映射里面 当控件滚动条竖着滚动 ON_W储_VSCROLL()
当控件滚动条横着滚动 ON_WM_VSCROLL()
就是滚动条滚动 触发的事件~楼上的 都是正确的~问题九:MFC里的消息映射具体是怎么实现的?命令消息和一般消息有什么区别? 通过一系列的宏定义如DECLARE_MESSAGE_MAP,建立了一个类别型录网。如果是一般消息,消息的路由是骸着父类这条线找到消息响应函数。如果是命令消息,有特定的消息路由。
建议你读一读侯俊杰(侯捷)写的《深入浅出MFC》。问题十:MFC的消息映射机制是利用什么来定义消息映射的 1、消息类别的判定就是利用了一个普通的数组,遍历查找来实现消息映射的。
2、但同一个应用程序的哪个消息发送到哪个窗口,利用了复杂的数据结构,如哈希表,以便实现最快速的窗口查找。(详情见 CWnd 类)
3、每个消息映射到相应的处理函数,是通过C++的虚函数,还有把相应的函数地址(就是函数名)保存在消息映射表
BEGIN_MESSAGE_MAP(主类名,父类名)
添加的消息
END_MESSAGE_MAP()
之间。这个宏展开其实就是第1点说到的数组。
4、MFC 是一个很复杂的框架,建议看其源代码并配合相应书籍来学习其原理,对以后阁下框架的设计会很有帮助。
推荐书籍:候俊杰 《深入浅出 MFC》、 王艳平 《Windows 程序设计》。(任选一本即可)
全部回答
感谢回答,我学习了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
cpa报名费多少钱,一览表如下
海天蒸鱼豉油怎么用
抢滩登陆3d如何进行技能突破
a(x+1)^2+b(x+1)=ax^2+bx+x+1=ax^2+(2a+b)+a+
新车是要把完税标志贴在车窗上吗
南瓜越老皮越黄照样子写句子
单选题Wethink________isaveryexciting
关于龙珠中贝吉塔的年龄问题?
Fifteen years have passed since we graduat
怎样买上证指数
天蝎座为什么要活的那么辛苦?
综合性学习(5分)  孔子、孟子思想中的精
广发携程信用卡有什么好处
淘宝怎么设置宝贝推荐
单选题喜庆日子,室外经常使用巨大的红色气球
推荐资讯
有哪些比较好的取名网啊?
壁挂炉压力表多少正常
伊宁市北郊供电所地址在什么地方?想过去办事
明星通讯地址好找么,我有些事要过去,
单程票和双程票日语怎么说
工商管理研究生与MBA工商管理硕士的区别
有人问我还喜欢他吗,我笑着摇摇头,不是不喜
用金属学理论解释下列现象:钢丝拉拔时不会断
Portez vous bien et aimez-moi toujours.这
风筝手中线是什么意思
都昌县民政局结婚登记处位置在什么地方啊,我
诛仙青云志中林惊羽和陆雪琪谁厉害
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?