Класс 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 Кнопка серая.
КНОПКА НАЖИМАЕТСЯ.