Добавление функциональных возможностей в составной элемент управления

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

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

Декларация IDispEventImpl интерфейсов для элементов управления

Для каждого вложенного элемента управления, который требуется для обработки событий, необходимо реализовать интерфейс диспетчеризации событий путем наследования от IDispEventImpl шаблон класса. Этот вывод делается в Декларации составной элемент управления и состоит из двух параметров

В следующей строке кода примера, в Декларации базового класса, объявляет интерфейс IDispEventImpl для элемента управления ( IDC_CIRCCTRL1 ), для класса составного элемента управления ( CMyCompositeCtrl ).

государственные IDispEventImpllt; IDC_CIRCCTL1, CMyCompositeCtrl & gt;

Декларация о карте приемник событий

После объявления о направлении классы событий для каждого вложенного элемента управления, необходимо добавить картой приемника событий на объект составного элемента управления. Эта карта выполняет две вещи:

Карта приемника событий реализована с помощью нескольких предопределенных макросов:

BEGIN_SINK_MAP()CtrlName)

Объявляет о начале карты приемника событий для составного элемента управления CtrlName.

SINK_ENTRY()CtrlID, DispIID, dispID, EventHandler)

Объявляет функцию обработчика (EventHandler) для указанного события (dispID), направление интерфейса DispIIDдля элемента управления, выявленные CtrlID.

END_SINK_MAP()

Объявляет конец карты приемника событий для составного элемента управления CtrlName.

В следующем примере кода (в.CPP-файл из составного элемента управления) объявляет картой приемника событий для CMyCompositeCtrl объект. Он объявляет два обработчика событий для двух элементов ( IDC_CIRCCTL1 и IDC_CIRCCTL2 ). Обрабатывается событие Click для обоих элементов управления OnClick_CircCtrl1 и OnClick_CircCtrl2 функции.

BEGI&N_SINK_MAP(CMyCompositeCtrl)
 nbsp; SINK_ENTRY (IDC_CIRCCTL1, DISPID_CLICK, OnClick_CircCtrl1)
   SINK_ENTRY (IDC_CIRCCTL2, DISPID_CLICK, OnClick_CircCtrl2)
END_SINK_MAP()

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

Декларация и реализации обработчиков событий

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

retVal __stdcall Eve&ntHandler (args)
{
 nbsp; Запуск надлежащим образом события //Handle
}

где retVal это возвращаемое значение обработчика событий, EventHandler — это имя функции обработчика, и args является необязательный список аргументов события. Это имя должно совпадать с одним из событий, обработчики объявила в карте приемник событий составного элемента управления.

В следующем примере кода определяется обработчик событий (события Click) для элемента управления в контейнере, выявленныеIDC_CIRCCTRL1:

void __stdcall (O&nClick_CircCtrl1)
{
 nbsp; MessageBox ("событие Click выпустили!", «CircCtl1», MB_OK);
}

Добавьте обработчики событий для оставшиеся записи в случае раковина карта составной элемент управления.

Инициирование и прекращения контакта с элементов управления

Прежде чем составной элемент управления становится полностью активно, каждого вложенного элемента управления, события которого обработке, запрашивается для исходящих интерфейсов, таких как интерфейс диспетчеризации событий. Если будут найдены все интерфейсы, устанавливаются соединения и ссылки на исходящий интерфейс используется для обработки событий элемента управления. Эта процедура называется «консультирование управления» и происходит автоматически составного элемента управления в объекте, с использованием карты приемника событий при инициализации составного элемента управления.

После того, как пользователь отклонил диалогового окна, очищаются все сохраненные ссылки на исходящих интерфейсов из родительских элементов. Это называется «unadvising элемента управления» и также делается автоматически составной элемент управления.

Index