使用命令的责任仅限于在命令与其处理程序函数之间建立消息映射连接,这是使用 MFC 类向导的任务。 还必须为命令处理程序编写代码。
Windows 消息通常发送到主框架窗口,但命令消息随后会路由到其他对象。 框架通过命令目标对象的标准序列路由命令,其中一个对象应具有命令的处理程序。 每个命令目标对象检查其消息映射,以查看它是否可以处理传入消息。
不同的命令目标类在不同时间检查自己的消息映射。 通常,类将命令路由到某些其他对象,以在命令中首次有机会。 如果这些对象都无法处理该命令,则原始类会检查其自己的消息映射。 然后,如果它无法提供处理程序本身,它可能会将命令路由到更多命令目标。 下表 标准命令路由 显示了每个类如何构造此序列。 命令目标路由命令的一般顺序为:
当前处于活动状态的子命令目标对象。
对自身。
指向其他命令目标。
此路由机制的成本与处理程序在响应命令时执行的作相比,路由成本较低。 请记住,仅当用户与用户界面对象交互时,框架才会生成命令。
标准命令路由
当此类型的对象收到命令时。 . . | 它使自身和其他命令目标对象有机会按以下顺序处理命令: |
---|---|
MDI 框架窗口 (CMDIFrameWnd ) |
1. 活动 CMDIChildWnd 2. 此框架窗口 3. 应用程序 ( CWinApp 对象) |
文档框架窗口 (CFrameWnd , CMDIChildWnd ) |
1. 活动视图 2. 此框架窗口 3. 应用程序 ( CWinApp 对象) |
查看 | 1. 此视图 2. 附加到视图的文档 |
文档 | 1. 本文档 2. 附加到文档的文档模板 |
對話方塊 | 1. 此对话框 2. 拥有对话框的窗口 3. 应用程序 ( CWinApp 对象) |
如果上表中第二列中的编号条目提到其他对象(如文档),请参阅第一列中的相应项。 例如,在视图将命令转发到其文档的第二列中时,请参阅第一列中的“文档”条目以进一步遵循路由。