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