Compartir vía


Enrutamiento de comandos

Su responsabilidad a la hora de trabajar con comandos se limita a crear conexiones de mapa de mensajes entre los comandos y sus funciones de controlador, una tarea para la cual se usa el Asistente para clases de MFC. También debe escribir el código de los controladores de comandos.

Los mensajes de Windows se envían normalmente a la ventana de marco principal, pero los mensajes de comando se enrutan a otros objetos. El marco de trabajo enruta los comandos a través de una secuencia estándar de objetos de destino del comando, uno de los cuales se espera que tenga un controlador para el comando. Cada objeto de comando-destino comprueba el mapa de mensajes para ver si puede controlar el mensaje entrante.

Distintas clases de comando-destino comprueban sus mapas de mensajes en momentos diferentes. Normalmente, una clase distribuye el comando a otros objetos para darles la primera oportunidad con el comando. Si ninguno de esos objetos controla el comando, la clase original comprueba su propio mapa de mensajes. A continuación, si no puede proporcionar su propio controlador, puede distribuir el comando a todavía más destinos de comando. La siguiente tabla Ruta estándar de comando muestra cómo cada una de las clases estructura esta secuencia. El orden general en el que un destino de comando enruta un comando es:

  1. A su objeto secundario de destino del comando actualmente activo.

  2. A sí mismo.

  3. A otros destinos de comando.

En cuanto a lo caro que es este mecanismo de enrutamiento, en comparación con lo que hace el controlador en respuesta a un comando, el costo de enrutamiento es bajo. Tenga en cuenta que el marco de trabajo genera comandos solo cuando el usuario interactúa con un objeto de la interfaz de usuario.

Ruta estándar de comando

Cuando un objeto de este tipo recibe un comando. . . Se da a si mismo y a otros objetos de destino del comando una oportunidad de controlar el comando, en este orden:
Ventana de marco de MDI (CMDIFrameWnd) 1. Activo CMDIChildWnd
2. Esta ventana de marco
3. Aplicación (objeto CWinApp)
Ventana de marco de documento (CFrameWnd, CMDIChildWnd) 1. Vista activa
2. Esta ventana de marco
3. Aplicación (objeto CWinApp)
Ver 1. Esta vista
2. Documento asociado a la vista
Documento 1. Este documento
2. Plantilla de documento asociada al documento
Cuadro de diálogo 1. Este cuadro de diálogo
2. Ventana propietaria del cuadro de diálogo
3. Aplicación (objeto CWinApp)

En los casos en los que las entradas numeradas de la segunda columna de la tabla anterior mencionan otros objetos, como un documento, vea el elemento correspondiente de la primera columna. Por ejemplo, cuando lee en la segunda columna que la vista reenvía un comando al documento, vea la entrada “Documento” en la primera columna para seguir el enrutamiento detenidamente.

Consulte también

Cómo el marco llama a un controlador