Маршрутизация команд

Ваша ответственность за работу с командами ограничена подключением карты сообщений между командами и их функциями обработчика, задачей, для которой используется мастер классов MFC. Также необходимо написать код для обработчиков команд.

Сообщения Windows обычно отправляются в основную область окна, однако командные сообщения затем направляются в другие объекты. Платформа перенаправляет команды через стандартную последовательность целевых объектов команд, один из которых должен иметь обработчик команды. Каждый целевой объект команды проверяет схему сообщений, чтобы определить возможность обработки входящих сообщений.

Разные целевые классы команд проверяют свои схемы сообщений в разное время. Как правило, класс направляет команду в определенные другие объекты, чтобы дать им первый шанс обработки команды. Если ни один из этих объектов не может обработать команду, исходный класс проверяет собственную схему сообщений. Затем, если он не может предоставить обработчик, оно может перенаправить команду в другие объекты. В приведенной ниже таблице Стандартная маршрутизация команды показано, как каждый из классов формирует эту последовательность. Общая последовательность маршрутизации команды выглядит следующим образом.

  1. К текущему активному дочернему целевому объекту команды.

  2. на само устройство;

  3. К другим целевым объектам команды.

Насколько дорого этот механизм маршрутизации по сравнению с тем, что выполняет обработчик в ответ на команду, стоимость маршрутизации низка. Следует иметь в виду, что платформа создает команды только в том случае, когда пользователь взаимодействует с объектами пользовательского интерфейса.

Стандартная маршрутизация команды

Когда объект этого типа получает команду. . . Он и другие целевые объекты команды сначала пытаются самостоятельно обработать команду в следующем порядке:
Окно области MDI (CMDIFrameWnd) 1. Активный CMDIChildWnd
2. Это окно фрейма
3. Приложение (CWinApp объект)
Окно области документа (CFrameWnd, CMDIChildWnd) 1. Активное представление
2. Это окно фрейма
3. Приложение (CWinApp объект)
Представление 1. Это представление
2. Документ, присоединенный к представлению
Документ 1. Этот документ
2. Шаблон документа, присоединенный к документу
Диалоговое окно 1. Это диалоговое окно
2. Окно, владеющее диалоговым окном
3. Приложение (CWinApp объект)

Если пронумерованные элементы во втором столбце таблицы указывают на другие объекты, например документ, см. соответствующий элемент в первом столбце. Например, если во втором столбце говорится, что представление перенаправляет команду в документ, см. запись "Документ" в первом столбце, чтобы отследить дальнейшую маршрутизацию.

См. также

Вызовы обработчика со стороны платформы