为了说明,请考虑 MDI 应用程序的“编辑”菜单中的“清除所有”菜单项中的命令消息。 假设此命令的处理程序函数恰好是应用程序文档类的成员函数。 下面是该命令在用户选择菜单项后到达其处理程序的方式:
主框架窗口首先接收命令消息。
主 MDI 帧窗口为当前活动的 MDI 子窗口提供了处理命令的机会。
MDI 子框架窗口的标准传送在检查自己的消息映射前为其视图提供了一个执行命令的机会。
视图首先检查自己的消息映射,如果未找到处理程序,则会将命令传送到其关联文档。
该文档检查其消息映射并找到一个处理程序。 调用该文档对象的成员函数后路由停止。
如果文档没有处理程序,它将下一步将命令路由到其文档模板。 然后,该命令将返回到视图,然后返回框架窗口。 最后,框架窗口将检查其消息映射。 如果该检查也失败,该命令将路由回主 MDI 帧窗口,然后路由到应用程序对象, 这是未经处理的命令的最终目标。