Инициализируем объект события

Оценить
(0 голоса)

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

Вам необходимо позаботиться о двух событиях, причем оба они предоставляются классом DTEEvents. Первое из них — это DTEEvents . OnMacrosRuntimeReset; это событие проис­ходит тогда, когда по какой-либо причине происходит сброс исполняющей среды. Посколь­ку сброс исполняющей среды вызывает очистку всего глобального состояния (и в том числе и связи с событиями), то это помешает перехвату событий (если вы не инициализировали объект события в процессе сброса).

Обработка этого события аналогична обработке любого другого: вы используете раскры­вающиеся списки типов и членов для генерирования скелета кода, а затем вставляете код инициализации объекта события:

Private Sub DTEEvents_OnMacrosRuntimeReset() Handles DTEEvents.OnMacrosRuntimeReset

WindowVisibilityEvents = CType(DTE.Events,Events2).WindowVisibilityEvents

End Sub

Второе событие, которое вам необходимо перехватить — это DTEEvents.OnStartupComplete. Оно происходит тогда, когда исполняющая среда и макросреда завершили свой запуск:

Private Sub DTEEvents_OnStartupComplete() Handles DTEEvents.OnStartupComplete . WindowVisibilityEvents = CType(DTE.Events, Events2).WindowVisibilityEvents End Sub

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

Для тестирования обработчика событий вы просто переходите в основную интегрирован­ную среду и закрываете (или скрываете) любое из окон инструментов (нажатием кнопки Close окна). Если вы сделали все правильно, то увидите окно сообщения, показанное на рис. 12.10.

Совет

Если вы добавили в ваш макропроект новое объявление события и не можете заста­вить сработать его обработчик, то причин для этого может быть несколько. Во-первых, убедитесь, что вы правильно добавили код инициализации класса событий как в со­бытие OnStartupComplete, так и в событие OnMacrosRuntimeReset. Во-вторых, вам может понадобиться выгрузить и вновь загрузить ваш макропроект (для того что­бы установить "подключение" для вашего события). Для выгрузки макропроекта за­кройте среду Macros (если она открыта) и в окне Macro Explorer основной интегриро­ванной среды щелкните правой кнопкой мыши по макропроекту (в который вы добавили события) и выберите Unload Macro Project. Затем добавьте макропроект обратно при помощи щелчка правой кнопкой мыши по корневому узлу Macros в Macro Explorer и выбора пункта Load Macro Project. Убедитесь в том, что вы выбрали ва­риант Enable Event Handling Code в диалоговом окне обеспечения безопасности (ко­торое появляется при запуске проекта).

Подробнее в этой категории: « Задача макроса Запуск макросов »
Запуск макросов
Присваивание макросам клавиатурных комбинаций
Выполнение макроса из командного окна
Макросы с параметрами
Резюме

Добавить комментарий


Защитный код
Обновить

© 2017 www.visualstudios.ru. Все права защищены.