Командное сообщение - Большая Энциклопедия Нефти и Газа, статья, страница 3
Когда-то я был молод и красив, теперь - только красив. Законы Мерфи (еще...)

Командное сообщение

Cтраница 3


MFC обеспечивает специальную обработку сообщений, генерируемых объектами пользовательского интерфейса, стандартными элементами, поддерживаемыми библиотекой MFC: меню, комбинации клавиш, кнопки панелей инструментов, строки состояния, элементы управления диалоговых окон. Меню рассматриваются в этой и следующей главах, остальные объекты пользовательского интерфейса - в гл. Сообщения, генерируемые объектами пользовательского интерфейса, называют командными сообщениями. Каждый раз, когда пользователь выбирает объект интерфейса или когда один из этих объектов необходимо обновить, объект передает командное сообщение главному окну. Однако библиотека MFC сразу направляет сообщение объекту окна представления. Если он не имеет нужного обработчика, библиотека MFC направляет сообщение объекту документа. Если же объект документа не содержит обработчик, библиотека MFC направляет сообщение объекту главного окна программы. Если главное окно также не располагает обработчиком, сообщение направляется объекту приложения. Наконец, если объект приложения не обеспечивает обработку, то сообщение обрабатывается стандартным образом.  [31]

Вторая категория включает извещения ( notification messages) от элементов управления и других дочерних окон, направляемые своим родительским окнам. Например, элемент управления LISTVIEW посылает своему родительскому окну сообщение WM COMMAND, содержащее код извещения LVN SETDISPINFO, когда требуется обновить информацию об элементах списка. Оконная процедура отвечает на полученное извещение заполнением структуры LV DISPINFO и передачей ее обратно в элемент управления. Механизмы передачи извещений и других ШМ - сообщений аналогичны, с одним единственным исключением. Извещение BN CLICKED, посылаемое элементом управления BUTTON, когда пользователь щелкает по нему, трактуется как командное сообщение и передается аналогично другим командам.  [32]

Когда сообщение передается объекту класса, MFC обращается к схеме сообщений, чтобы определить, есть ли в классе обработчик такого сообщения. Если обработчик найден, ему передается управление. При отсутствии обработчика MFC ищет его в базовом классе. Если это не дает результата, то поиск будет продолжен по иерархии классов до первого встретившегося обработчика. Если в иерархии обработчик отсутствует, то будет выполнена стандартная обработка сообщения. Если же это командное сообщение, то оно перенаправляется следующему объекту в описанной ранее последовательности.  [33]

Последующие байты текста ( SA, SF, SN) и SUM-байт контроллер запоминает в своих внутренних регистрах. При этом он исключает их из потока сообщений на магистрали ветви, выставляя вместо них WAIT-байты. Первый пустой SPACE-байт, передаваемый драйвером в составе командного сообщения, играет роль временной задержки, необходимой контроллеру для выполнения командной операции на магистрали крейта и подготовки ответа. Вместо него контроллер также генерирует на магистрали WAIT-байт. Ответное сообщение, состоящее из заглавного SC-байта и STATUS-байта, генерируется контроллером вместо последних двух SPACE-байтов, которые также исключаются из потока на магистрали. Таким образом, введение пустых байтов в командное сообщение и генерирование контроллером байтов ожидания позволяет сделать время реакции контроллера равным длительности командного сообщения.  [34]

Последующие байты текста ( SA, SF, SN) и SUM-байт контроллер запоминает в своих внутренних регистрах. При этом он исключает их из потока сообщений на магистрали ветви, выставляя вместо них WAIT-байты. Первый пустой SPACE-байт, передаваемый драйвером в составе командного сообщения, играет роль временной задержки, необходимой контроллеру для выполнения командной операции на магистрали крейта и подготовки ответа. Вместо него контроллер также генерирует на магистрали WAIT-байт. Ответное сообщение, состоящее из заглавного SC-байта и STATUS-байта, генерируется контроллером вместо последних двух SPACE-байтов, которые также исключаются из потока на магистрали. Таким образом, введение пустых байтов в командное сообщение и генерирование контроллером байтов ожидания позволяет сделать время реакции контроллера равным длительности командного сообщения.  [35]



Страницы:      1    2    3