213消息的发送和接收 1.标准 Windows消息和处理函数 2.命令消息的发送 MFC把命令消息发送给命令目标链(有可能处理该消 息的一系列对象),其中至少有一个对象含有处理该命 令消息的消息处理函数。命令目标链中的对象接收到消 息后,将检查自己的消息映射,查看是否能处理相应的 消息。不同对象检查消息映射的时机是不同的,也就是 说,消息是按一定优先顺序在命令目标链中传递的。通 常,每个命令目标类先把命令消息发送给某些其它对象 ,给其它对象先行处理该命令消息的机会。 表23列出了常用目标类的命令发送顺序
2.1.3 消息的发送和接收 1.标准Windows消息和处理函数 2.命令消息的发送 MFC把命令消息发送给命令目标链(有可能处理该消 息的一系列对象),其中至少有一个对象含有处理该命 令消息的消息处理函数。命令目标链中的对象接收到消 息后,将检查自己的消息映射,查看是否能处理相应的 消息。不同对象检查消息映射的时机是不同的,也就是 说,消息是按一定优先顺序在命令目标链中传递的。通 常,每个命令目标类先把命令消息发送给某些其它对象 ,给其它对象先行处理该命令消息的机会。 表2.3列出了常用目标类的命令发送顺序
表23 标准命令的发送顺序 接收到命令的命令目标类 查询命令的顺序 MDI主边框窗口 1)活动的MD子窗口 2)主边框窗口 3)应用程序( CInar类对象) MDI子框架窗口 1)活动视图 2)子框架窗口 SD边框窗口 1)活动视图 2)框架窗口 3)应用程序( CWinApp类对象) 视图 1)视图 2)与视图相连的文档 文档 1)文档 2)与文档相连的文档模板 对话框 1)本对话框 2)拥有本对话框的窗口 3)应用程序( CWinapp3类对象
表2.3 标准命令的发送顺序 接收到命令的命令目标类 查询命令的顺序 MDI主边框窗口 1) 活动的MDI子窗口 2) 主边框窗口 3) 应用程序(CWinApp类对象) MDI子框架窗口 1) 活动视图 2) 子框架窗口 SDI边框窗口 1) 活动视图 2) 框架窗口 3) 应用程序(CWinApp类对象) 视图 1) 视图 2) 与视图相连的文档 文档 1) 文档 2) 与文档相连的文档模板 对话框 1) 本对话框 2) 拥有本对话框的窗口 3) 应用程序(CWinApp类对象)
214消息映射的结构 消息映射都由一组宏组成,可以参照【例2.1】的源代 码,在 MOuse Position view.cp文件中,我们可以看到以 下代码: BEGIN MESSAGE MAP(CMouSe Position View, C View) IAFX MSG MAP(CMouse Position View) ON WM MOUSEMOVEO IJAFX MSG MAP END MESSAGE MAPO
2.1.4 消息映射的结构 消息映射都由一组宏组成,可以参照【例2.1】的源代 码,在CMousePositionView.cpp文件中,我们可以看到以 下代码: BEGIN_MESSAGE_MAP(CMousePositionView, CView) //{{AFX_MSG_MAP(CMousePositionView) ON_WM_MOUSEMOVE() //}}AFX_MSG_MAP END_MESSAGE_MAP()
1.消息映射的继承关系 2.消息映射的结构 表24列出了常用的映射宏及其语法格式。注意 ,映射宏之后不能用分号 3.手工添加消息映射
1.消息映射的继承关系 2.消息映射的结构 表2.4列出了常用的映射宏及其语法格式。注意 ,映射宏之后不能用分号。 3.手工添加消息映射
表24 常用映射宏及其语法 消息类型 宏格式 参数 标准 Windows消息 ON WM XXX 无参数 命令消息 ON COMMAND 命令Ⅲ,处理函数名 命令更新通知消息 ON UPDATE COMMAND UI 命令D,处理函数名 控件通知消息 ON XXX 命令ID,处理函数名 用户自定义消息 ON MESSAGE 自定义消息ID,处理函数 名 已注册 Windows消息 ON REGISTERED MESSAGE 消息⑩,处理函数名 命令ID范围 ON COMMAND RANGE 起始命令ID,结束ID,处 理函数名 将更新的命令D范围 ON UPDATE COMMAND UⅠ RANGE起始命令ID,结束ID,处 理函数名 控件D范围 ON CONTROL RANGE 控件通知码,起始控件ID 结束I,处理函数
表2.4 常用映射宏及其语法 消息类型 宏格式 参 数 标准Windows消息 ON_WM_XXX 无参数 命令消息 ON_COMMAND 命令ID,处理函数名 命令更新通知消息 ON_UPDATE_COMMAND_UI 命令ID,处理函数名 控件通知消息 ON_XXX 命令ID,处理函数名 用户自定义消息 ON_MESSAGE 自定义消息ID,处理函数 名 已注册Windows消息 ON_REGISTERED_MESSAGE 消息ID,处理函数名 命令ID范围 ON_COMMAND_RANGE 起始命令ID,结束ID,处 理函数名 将更新的命令ID范围 ON_UPDATE_COMMAND_UI_RANGE 起始命令ID,结束ID,处 理函数名 控件ID范围 ON_CONTROL_RANGE 控件通知码,起始控件ID, 结束ID,处理函数