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


Класс CSnapInItemImpl

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

Внимание

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения 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 Кнопка серая.

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

См. также

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