Как перечисление дочерних элементов объекта Snap-In?

Для правильного отображения содержимого объекта snap-in, вам нужно перечислить дочерние элементы объекта, если они существуют. Лучшее место для этого изменения заключается в методе уведомлять класса оснастки в данных (в этой дискуссии, CSnapNameData ).

Примечание   Класс оснастки в данных является производным от CSnapInItemImpl.

По умолчанию мастер объектов ATL создает обработчик для этого уведомления. В этом обработчике необходимо изменить существующие switch заявление для обработки MMCN_EXPAND и MMCN_SHOW уведомления.

Обработка MMCN_EXPAND уведомления

MMCN_EXPAND уведомление отправляется, когда объект snap-in папки должен быть расширен или контракт. В этом случае необходимо только перечисление элементов панели область. Это перечисление выполняется в case заявление для уведомления MMCN_EXPAND.

Чтобы вставить элементы области охвата, сначала получить IConsoleNameSpace интерфейс для объекта snap-in и затем вызвать метод InsertItem . В следующем примере демонстрируется извлечение необходимых интерфейсов

 CComQIPtrlt; IConsoleNameSpace,
& IID_IConsoleNameSpace > spConsoleNameSpace(pConsole);
/ / TODO: перечисление элементов панели область с определяемой пользователем функции

Обработка MMCN_SHOW уведомления

MMCN_SHOW уведомление при выборе элемента или ребая в первый раз. Это перечисление выполняется в case заявление для уведомления MMCN_SHOW . В отличие от MMCN_EXPAND уведомления необходимо перечислить элементы области результатов и область панели элементов.

Во-первых, перечисление элементов сферы, получая IConsoleNameSpace интерфейс для объекта snap-in и затем вызов метод InsertItem . После того, как перечислены элементы области охвата, сделать то же самое для результата элементы области, получая IResultData интерфейс и вызов к InsertItem.

CComQIPtrlt; IConsoleNameSpace,
& IID_IConsoleNameSpace > spConsoleNameSpace(pConsole);
/ / TODO: перечисление элементов панели область с определяемой пользователем функции
CComQIPtr < IResultData и IID_IResultData > spResultData(pConsole);
/ / TODO: перечисление элементов панели результатов с определяемой пользователем функции

Index