Поделиться через


Класс CSnapInItemImpl

Замечание

Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.

Этот класс предоставляет методы для реализации объекта узла оснастки.

Внимание

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.

Синтаксис

template <class T, BOOL bIsExtension = FALSE>
class ATL_NO_VTABLE CSnapInItemImpl : public CSnapInItem

Параметры

T
Класс, производный от CSnapInItemImpl.

bIsExtension
ЗНАЧЕНИЕ TRUE, если объект является расширением оснастки; в противном случае ЗНАЧЕНИЕ FALSE.

Участники

Открытые конструкторы

Имя Описание
CSnapInItemImpl::CSnapInItemImpl Конструктор.

Открытые методы

Имя Описание
CSnapInItemImpl::AddMenuItems Добавляет элементы меню в контекстное меню.
CSnapInItemImpl::Command Вызывается консолью при выборе настраиваемого элемента меню.
CSnapInItemImpl::CreatePropertyPages Добавляет страницы в лист свойств оснастки.
CSnapInItemImpl::FillData Копирует сведения об объекте оснастки в указанный поток.
CSnapInItemImpl::GetResultPaneInfo Извлекает RESULTDATAITEM структуру оснастки.
CSnapInItemImpl::GetResultViewType Определяет тип представления, используемого областью результатов.
CSnapInItemImpl::GetScopePaneInfo Извлекает SCOPEDATAITEM структуру оснастки.
CSnapInItemImpl::Notify Вызывается консолью, чтобы уведомить оснастку о действиях, выполняемых пользователем.
CSnapInItemImpl::QueryPagesFor Вызывается, чтобы узнать, поддерживает ли узел оснастки страницы свойств.
CSnapInItemImpl::SetMenuInsertionFlags Изменяет флаги вставки меню для объекта оснастки.
CSnapInItemImpl::SetToolbarButtonInfo Задает сведения указанной кнопки панели инструментов.
CSnapInItemImpl::UpdateMenuState Обновляет состояние элемента контекстного меню.
CSnapInItemImpl::UpdateToolbarButton Обновляет состояние указанной кнопки панели инструментов.

Открытые члены данных

Имя Описание
CSnapInItemImpl::m_bstrDisplayName Имя объекта оснастки.
CSnapInItemImpl::m_resultDataItem Структура Windows RESULTDATAITEM , используемая CSnapInItemImpl объектом.
CSnapInItemImpl::m_scopeDataItem Структура Windows SCOPEDATAITEM , используемая CSnapInItemImpl объектом.

Замечания

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

Иерархия наследования

CSnapInItem

CSnapInItemImpl

Требования

Заголовок: atlsnap.h

CSnapInItemImpl::AddMenuItems

Этот метод реализует функцию Win32 IExtendContextMenu::AddMenuItems.

AddMenuItems(
    LPCONTEXTMENUCALLBACK piCallback,
    long* pInsertionAllowed,
    DATA_OBJECT_TYPES type);

Параметры

piCallback
[in] Указатель на IContextMenuCallback элемент, который может добавлять элементы в контекстное меню.

pInsertionAllowed
[in, out] Определяет определяемые консоли управления Майкрософт (MMC) точки вставки элементов меню, которые можно использовать. Это может быть сочетание следующих флагов:

  • CCM_INSERTIONALLOWED_TOP Элементы можно вставить в верхней части контекстного меню.

  • CCM_INSERTIONALLOWED_NEW Элементы можно вставить в подменю "Создать".

  • CCM_INSERTIONALLOWED_TASK элементы можно вставить в подменю задачи.

  • CCM_INSERTIONALLOWED_VIEW элементы можно вставить в меню представления панели инструментов или в подменю "Вид" контекстного меню области результатов.

type
[in] Указывает тип объекта. Он может иметь одно из следующих значений:

  • CCT_SCOPE объект данных для контекста области области.

  • CCT_RESULT объект data для контекста области результатов.

  • CCT_SNAPIN_MANAGER объект данных для контекста диспетчера оснастки.

  • CCT_UNINITIALIZED объект Data имеет недопустимый тип.

CSnapInItemImpl::Command

Этот метод реализует функцию Win32 IExtendContextMenu::Command.

Command(long lCommandID, DATA_OBJECT_TYPES type);

Параметры

lCommandID
[in] Указывает идентификатор команды элемента меню.

type
[in] Указывает тип объекта. Он может иметь одно из следующих значений:

  • CCT_SCOPE объект данных для контекста области области.

  • CCT_RESULT объект data для контекста области результатов.

  • CCT_SNAPIN_MANAGER объект данных для контекста диспетчера оснастки.

  • CCT_UNINITIALIZED объект Data имеет недопустимый тип.

CSnapInItemImpl::CreatePropertyPages

Этот метод реализует функцию Win32 IExtendPropertySheet::CreatePropertyPages.

CreatePropertyPages(
    LPPROPERTYSHEETCALLBACK lpProvider,
    long handle,
    IUnknown* pUnk,
    DATA_OBJECT_TYPES type);

Параметры

lpProvider
[in] Указатель на IPropertySheetCallback интерфейс.

ручка
[in] Указывает дескриптор, используемый для маршрутизации сообщения уведомления MMCN_PROPERTY_CHANGE в соответствующий класс данных.

панк
[in] Указатель на IExtendPropertySheet интерфейс на объект, содержащий сведения о контексте узла.

type
[in] Указывает тип объекта. Он может иметь одно из следующих значений:

  • CCT_SCOPE объект данных для контекста области области.

  • CCT_RESULT объект data для контекста области результатов.

  • CCT_SNAPIN_MANAGER объект данных для контекста диспетчера оснастки.

  • CCT_UNINITIALIZED объект Data имеет недопустимый тип.

CSnapInItemImpl::CSnapInItemImpl

Формирует объект CSnapInItemImpl.

CSnapInItemImpl();

CSnapInItemImpl::FillData

Эта функция вызывается для получения сведений об элементе.

FillData(CLIPFORMAT cf, LPSTREAM pStream);

Параметры

cf
[in] Формат (текст, форматированный текст или форматированный текст с элементами OLE) буфера обмена.

pStream
[in] Указатель на поток, содержащий данные объекта.

Замечания

Чтобы правильно реализовать эту функцию, скопируйте правильные сведения в поток (pStream), в зависимости от формата буфера обмена, указанного cf.

CSnapInItemImpl::GetResultViewType

Вызовите эту функцию, чтобы получить тип представления для области результатов объекта оснастки.

GetResultViewType(
    LPOLESTR* ppViewType,
    long* pViewOptions);

Параметры

ppViewType
[out] Указатель на адрес возвращаемого типа представления.

pViewOptions
[out] Указатель на перечисление MMC_VIEW_OPTIONS, которое предоставляет консоль с параметрами, указанными в оснастке. Значение может быть одним из следующих.

  • MMC_VIEW_OPTIONS_NOLISTVIEWS = 0x00000001 указывает консоли воздержаться от представления стандартного представления списка в меню "Вид ". Позволяет оснастке отображать собственные пользовательские представления только в области представления результатов. Это единственный флаг параметра, определенный в настоящее время.

  • MMC_VIEW_OPTIONS_NONE = 0 Разрешает параметры представления по умолчанию.

CSnapInItemImpl::GetScopePaneInfo

Вызовите эту функцию, чтобы получить SCOPEDATAITEM структуру оснастки.

GetScopePaneInfo (SCOPEDATAITEM* pScopeDataItem);

Параметры

pScopeDataItem
[out] Указатель на SCOPEDATAITEM структуру CSnapInItemImpl объекта.

CSnapInItemImpl::GetResultPaneInfo

Вызовите эту функцию, чтобы получить RESULTDATAITEM структуру оснастки.

GetResultPaneInfo (RESULTDATAITEM* pResultDataItem);

Параметры

pResultDataItem
[out] Указатель на RESULTDATAITEM структуру CSnapInItemImpl объекта.

CSnapInItemImpl::m_bstrDisplayName

Содержит строку, отображаемую для элемента узла.

CComBSTR m_bstrDisplayName;

CSnapInItemImpl::m_scopeDataItem

Структура SCOPEDATAITEM объекта данных оснастки.

SCOPEDATAITEM m_scopeDataItem;

CSnapInItemImpl::m_resultDataItem

Структура RESULTDATAITEM объекта данных оснастки.

RESULTDATAITEM m_resultDataItem;

CSnapInItemImpl::Notify

Вызывается при действии объекта оснастки пользователем.

STDMETHOD(Notify)(
    MMC_NOTIFY_TYPE event,
    long arg,
    long param,
    IComponentData* pComponentData,
    IComponent* pComponent,
    DATA_OBJECT_TYPES type) = 0;

Параметры

event
[in] Определяет действие, выполняемое пользователем. Возможны следующие уведомления:

  • MMCN_ACTIVATE Отправлено при активации и деактивации окна.

  • MMCN_ADD_IMAGES Отправлено, чтобы добавить изображения в область результатов.

  • MMCN_BTN_CLICK Отправлено, когда пользователь щелкает одну из кнопок панели инструментов.

  • MMCN_CLICK Отправить, когда пользователь нажимает кнопку мыши в элементе представления списка.

  • MMCN_DBLCLICK Отправлено, когда пользователь дважды щелкает кнопку мыши в элементе представления списка.

  • MMCN_DELETE Sent, чтобы сообщить оснастке, что объект должен быть удален.

  • MMCN_EXPAND Отправлено, когда нужно развернуть или заключить папку.

  • MMCN_MINIMIZED Отправлено, если окно свернуто или развернуто.

  • MMCN_PROPERTY_CHANGE Sent, чтобы уведомить объект оснастки о том, что представление оснастки будет изменено.

  • MMCN_REMOVE_CHILDREN Отправлено, когда оснастка должна удалить всю поддеревку, добавленную ниже указанного узла.

  • MMCN_RENAME Первый раз отправить запрос на переименование и второй раз, чтобы выполнить переименование.

  • MMCN_SELECT Отправлено при выборе элемента в области или области представления результатов.

  • MMCN_SHOW Отправлено при первом выборе или отмене выбора элемента области.

  • MMCN_VIEW_CHANGE Отправлено, когда оснастка может обновлять все представления при изменении.

arg
[in] Зависит от типа уведомления.

param
[in] Зависит от типа уведомления.

pComponentData
[out] Указатель на объект, реализующий IComponentData. Этот параметр имеет значение NULL, если уведомление не пересылается из IComponentData::Notify.

pComponent
[out] Указатель на объект, реализующий IComponent. Этот параметр имеет значение NULL, если уведомление не пересылается из IComponent::Notify.

type
[in] Указывает тип объекта. Он может иметь одно из следующих значений:

  • CCT_SCOPE объект данных для контекста области области.

  • CCT_RESULT объект data для контекста области результатов.

  • CCT_SNAPIN_MANAGER объект данных для контекста диспетчера оснастки.

  • CCT_UNINITIALIZED объект Data имеет недопустимый тип.

CSnapInItemImpl::QueryPagesFor

Вызывается, чтобы узнать, поддерживает ли узел оснастки страницы свойств.

QueryPagesFor(DATA_OBJECT_TYPES type);

CSnapInItemImpl::SetMenuInsertionFlags

Вызовите эту функцию, чтобы изменить флаги вставки меню, указанные pInsertionAllowed для объекта оснастки.

void SetMenuInsertionFlags(
    bool bBeforeInsertion,
    long* pInsertionAllowed);

Параметры

bBeforeInsertion
[in] Ненулевое значение, если функция должна вызываться перед добавлением элементов в контекстное меню; в противном случае — 0.

pInsertionAllowed
[in, out] Определяет определяемые консоли управления Майкрософт (MMC) точки вставки элементов меню, которые можно использовать. Это может быть сочетание следующих флагов:

  • CCM_INSERTIONALLOWED_TOP Элементы можно вставить в верхней части контекстного меню.

  • CCM_INSERTIONALLOWED_NEW Элементы можно вставить в подменю "Создать".

  • CCM_INSERTIONALLOWED_TASK элементы можно вставить в подменю задачи.

  • CCM_INSERTIONALLOWED_VIEW элементы можно вставить в меню представления панели инструментов или в подменю "Вид" контекстного меню области результатов.

Замечания

При разработке основной оснастки можно сбросить любой из флагов вставки в качестве способа ограничения типа элементов меню, которые может добавить стороннее расширение. Например, основная оснастка может очистить флаг CCM_INSERTIONALLOWED_NEW, чтобы запретить расширениям добавлять собственные элементы меню "Создать".

Не следует пытаться задать биты в pInsertionAllowed , которые были первоначально очищены. Будущие версии MMC могут использовать биты, которые в настоящее время не определены, поэтому не следует изменять биты, которые в настоящее время не определены.

CSnapInItemImpl::SetToolbarButtonInfo

Вызовите эту функцию, чтобы изменить все стили кнопок панели инструментов, объект оснастки перед созданием панели инструментов.

void SetToolbarButtonInfo(
    UINT id,
    BYTE* fsState,
    BYTE* fsType);

Параметры

id
[in] Идентификатор настраиваемой кнопки панели инструментов.

fsState
[in] Флаги состояния кнопки. Может быть одним или несколькими из следующих вариантов:

  • TBSTATE_CHECKED Кнопка имеет стиль TBSTYLE_CHECKED и нажимается.

  • TBSTATE_ENABLED Кнопка принимает входные данные пользователя. Кнопка, которая не имеет этого состояния, не принимает входные данные пользователя и является серым.

  • TBSTATE_HIDDEN Кнопка не отображается и не может получать входные данные пользователя.

  • TBSTATE_INDETERMINATE Кнопка серая.

  • TBSTATE_PRESSED нажатие кнопки.

  • TBSTATE_WRAP Разрыв строки следует за кнопкой. Кнопка также должна иметь TBSTATE_ENABLED.

fsType
[in] Флаги состояния кнопки. Может быть одним или несколькими из следующих вариантов:

  • TBSTYLE_BUTTON Создает стандартную кнопку нажатия.

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

  • TBSTYLE_CHECKGROUP Создает кнопку проверки, которая остается нажимаемой до нажатия другой кнопки в группе.

  • TBSTYLE_GROUP Создает кнопку, которая остается нажимаемой до нажатия другой кнопки в группе.

  • TBSTYLE_SEP Создает разделитель, предоставляя небольшой разрыв между группами кнопок. Кнопка, которая имеет этот стиль, не получает входные данные пользователя.

CSnapInItemImpl::UpdateMenuState

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

void UpdateMenuState(
    UINT id,
    LPTSTR pBuf,
    UINT* flags);

Параметры

id
[in] Идентификатор заданного элемента меню.

pBuf
[in] Указатель на строку для обновления элемента меню.

flags
[in] Задает новые флаги состояния. Это может быть сочетание следующих флагов:

  • MF_POPUP Указывает, что это подменю в контекстном меню. Элементы меню, точки вставки и дополнительные подменю могут быть добавлены в этот подменю, используя его lCommandID в качестве их IInsertionPointID.

  • MF_BITMAP и MF_OWNERDRAW Эти флаги не разрешены и будут возвращать значение E_INVALIDARG.

  • MF_SEPARATOR рисует горизонтальную линию деления. IContextMenuProvider Только разрешено добавлять элементы меню с MF_SEPARATOR набором.

  • MF_CHECKED Поместите флажок рядом с элементом меню.

  • MF_DISABLED отключает элемент меню, чтобы его нельзя было выбрать, но флаг не серо.

  • MF_ENABLED Включает элемент меню, чтобы его можно было выбрать, восстановить его из его серого состояния.

  • MF_GRAYED Отключает пункт меню, серый цвет, чтобы его нельзя было выбрать.

  • MF_MENUBARBREAK Функции, аналогичные флагу MF_MENUBREAK для строки меню. В раскрывающемся меню, подменю или контекстном меню новый столбец отделяется от старого столбца вертикальной линией.

  • MF_MENUBREAK Помещает элемент в новую строку (для строки меню) или в новом столбце (для раскрывающегося меню, подменю или контекстного меню) без разделения столбцов.

  • MF_UNCHECKED Не помещать флажок рядом с элементом (по умолчанию).

Следующие группы флагов нельзя использовать вместе:

  • MF_DISABLED, MF_ENABLED и MF_GRAYED.

  • MF_MENUBARBREAK и MF_MENUBREAK.

  • MF_CHECKED и MF_UNCHECKED.

CSnapInItemImpl::UpdateToolbarButton

Вызовите эту функцию, чтобы изменить кнопку панели инструментов для объекта оснастки перед отображением.

BOOL UpdateToolbarButton(UINT id, BYTE fsState);

Параметры

id
Указывает идентификатор кнопки для обновления кнопки.

fsState
Указывает состояние кнопки панели инструментов. Если это состояние должно быть задано, верните значение TRUE. Это может быть сочетание следующих флагов:

  • ВКЛЮЧЕНА кнопка принимает входные данные пользователя. Кнопка, которая не имеет этого состояния, не принимает входные данные пользователя и является серым.

  • CHECKED Кнопка имеет стиль CHECKED и нажимается.

  • HIDDEN Кнопка не отображается и не может получать входные данные пользователя.

  • INDETERMINATE Кнопка серая.

  • КНОПКА НАЖИМАЕТСЯ.

См. также

Общие сведения о классе