CSnapInItemImpl Class

このクラスは、スナップイン ノード オブジェクトを実装するためのメソッドを提供します。

重要

このクラスとそのメンバーは、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 CSnapInItemImpl オブジェクトによって使用される Windows の RESULTDATAITEM 構造体。
CSnapInItemImpl::m_scopeDataItem CSnapInItemImpl オブジェクトによって使用される Windows の SCOPEDATAITEM 構造体。

解説

CSnapInItemImpl では、メニュー項目とツールバーの追加、該当するハンドラー関数へのスナップイン ノードのコマンドの転送など、スナップイン ノード オブジェクトの基本的な実装が提供されます。 これらの機能は、いくつかの異なるインターフェイスおよびマップの種類を使用して実装されます。 既定の実装では、派生クラスの正しいインスタンスを特定し、メッセージを正しいインスタンスに転送することで、ノード オブジェクトに送信される通知が処理されます。

継承階層

CSnapInItem

CSnapInItemImpl

必要条件

ヘッダー: atlsnap.h

CSnapInItemImpl::AddMenuItems

このメソッドでは、Win32 関数 IExtendContextMenu::AddMenuItems を実装します。

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

パラメーター

piCallback
[入力] 項目をコンテキスト メニューに追加できる IContextMenuCallback へのポインター。

pInsertionAllowed
[入出力] Microsoft 管理コンソール (MMC) で定義された使用可能なメニュー項目の挿入ポイントを識別します。 これには、次のフラグの組み合わせを指定できます。

  • CCM_INSERTIONALLOWED_TOP 項目は、コンテキスト メニューの上部に挿入できます。

  • CCM_INSERTIONALLOWED_NEW 項目は、[新規作成] サブメニューに挿入できます。

  • CCM_INSERTIONALLOWED_TASK 項目は、[タスク] サブメニューに挿入できます。

  • CCM_INSERTIONALLOWED_VIEW 項目は、ツールバーの [表示] メニューまたは結果ウィンドウのコンテキスト メニューの [表示] サブメニューに挿入できます。

type
[入力] オブジェクトの種類を指定します。 次のいずれかの値を指定できます。

  • CCT_SCOPE: スコープ ウィンドウ コンテキストのデータ オブジェクト。

  • CCT_RESULT: 結果ウィンドウ コンテキストのデータ オブジェクト。

  • CCT_SNAPIN_MANAGER: スナップイン マネージャー コンテキストのデータ オブジェクト。

  • CCT_UNINITIALIZED: 無効な型のデータ オブジェクト。

CSnapInItemImpl::Command

このメソッドでは、Win32 関数 IExtendContextMenu::Command を実装します。

Command(long lCommandID, DATA_OBJECT_TYPES type);

パラメーター

lCommandID
[入力] メニュー項目のコマンド識別子を指定します。

type
[入力] オブジェクトの種類を指定します。 次のいずれかの値を指定できます。

  • CCT_SCOPE: スコープ ウィンドウ コンテキストのデータ オブジェクト。

  • CCT_RESULT: 結果ウィンドウ コンテキストのデータ オブジェクト。

  • CCT_SNAPIN_MANAGER: スナップイン マネージャー コンテキストのデータ オブジェクト。

  • CCT_UNINITIALIZED: 無効な型のデータ オブジェクト。

CSnapInItemImpl::CreatePropertyPages

このメソッドでは、Win32 関数 IExtendPropertySheet::CreatePropertyPages を実装します。

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

パラメーター

lpProvider
[入力] IPropertySheetCallback インターフェイスへのポインター。

ハンドル
[入力] MMCN_PROPERTY_CHANGE 通知メッセージを該当するデータ クラスにルーティングするために使用するハンドルを指定します。

pUnk
[入力] ノードに関するコンテキスト情報を含むオブジェクト上の IExtendPropertySheet インターフェイスへのポインター。

type
[入力] オブジェクトの種類を指定します。 次のいずれかの値を指定できます。

  • CCT_SCOPE: スコープ ウィンドウ コンテキストのデータ オブジェクト。

  • CCT_RESULT: 結果ウィンドウ コンテキストのデータ オブジェクト。

  • CCT_SNAPIN_MANAGER: スナップイン マネージャー コンテキストのデータ オブジェクト。

  • CCT_UNINITIALIZED: 無効な型のデータ オブジェクト。

CSnapInItemImpl::CSnapInItemImpl

CSnapInItemImpl オブジェクトを構築します。

CSnapInItemImpl();

CSnapInItemImpl::FillData

この関数は、項目に関する情報を取得するために呼び出されます。

FillData(CLIPFORMAT cf, LPSTREAM pStream);

パラメーター

cf
[入力] クリップボードの形式 (テキスト、リッチ テキスト、または OLE 項目を含むリッチ テキスト)。

pStream
[入力] オブジェクト データを含むストリームへのポインター。

解説

この関数を適切に実装するには、cf で示されるクリップボードの形式に応じて、正しい情報をストリーム (pStream) にコピーします。

CSnapInItemImpl::GetResultViewType

スナップイン オブジェクトの結果ウィンドウのビューの種類を取得するには、この関数を呼び出します。

GetResultViewType(
    LPOLESTR* ppViewType,
    long* pViewOptions);

パラメーター

ppViewType
[出力] 返されたビューの種類へのポインター。

pViewOptions
[出力] MMC_VIEW_OPTIONS 列挙体へのポインター。これにより、所有しているスナップインによって指定されたオプションがコンソールに提供されます。 この値には、次のいずれかを指定できます。

  • MMC_VIEW_OPTIONS_NOLISTVIEWS = 0x00000001 を指定すると、コンソールが、[表示] メニューで標準のリスト ビューの選択肢を表示しないように指示されます。 これにより、スナップインでは、結果ビュー ウィンドウに独自のカスタム ビューのみを表示できます。 これは、現時点で定義されている唯一のオプション フラグです。

  • MMC_VIEW_OPTIONS_NONE = 0 を指定すると、既定の表示オプションが使用できるようになります。

CSnapInItemImpl::GetScopePaneInfo

スナップインの SCOPEDATAITEM 構造体を取得するには、この関数を呼び出します。

GetScopePaneInfo (SCOPEDATAITEM* pScopeDataItem);

パラメーター

pScopeDataItem
[出力] CSnapInItemImpl オブジェクトの SCOPEDATAITEM 構造体へのポインター。

CSnapInItemImpl::GetResultPaneInfo

スナップインの RESULTDATAITEM 構造体を取得するには、この関数を呼び出します。

GetResultPaneInfo (RESULTDATAITEM* pResultDataItem);

パラメーター

pResultDataItem
[出力] CSnapInItemImpl オブジェクトの RESULTDATAITEM 構造体へのポインター。

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
[入力] ユーザーが実行するアクションを識別します。 次の通知が可能です。

  • MMCN_ACTIVATE: ウィンドウがアクティブ化および非アクティブ化されるときに送信されます。

  • MMCN_ADD_IMAGES: 画像を結果ウィンドウに追加するために送信されます。

  • MMCN_BTN_CLICK: ユーザーがツールバーのいずれかのボタンをクリックすると送信されます。

  • MMCN_CLICK: ユーザーがリスト ビュー項目でマウス ボタンをクリックすると送信されます。

  • MMCN_DBLCLICK: ユーザーがリスト ビュー項目でマウス ボタンをダブルクリックすると送信されます。

  • MMCN_DELETE: オブジェクトを削除する必要があることをスナップインに通知するために送信されます。

  • MMCN_EXPAND: フォルダーを展開するか折りたたむ必要がある場合に送信されます。

  • MMCN_MINIMIZED: ウィンドウが最小化または最大化されるときに送信されます。

  • MMCN_PROPERTY_CHANGE: スナップイン オブジェクトのビューが変更されようとしていることをスナップイン オブジェクトに通知するために送信されます。

  • MMCN_REMOVE_CHILDREN: スナップインで、指定したノードの下に追加されたサブツリー全体を削除する必要がある場合に送信されます。

  • MMCN_RENAME: 1 回目は名前変更のクエリを行うために送信され、2 回目は名前変更を行うために送信されます。

  • MMCN_SELECT: スコープ内または結果ビュー ウィンドウ内の項目が選択されると送信されます。

  • MMCN_SHOW: スコープ項目が初めて選択または選択解除されたときに送信されます。

  • MMCN_VIEW_CHANGE: 変更が行われたときにスナップインですべてのビューを更新できる場合に送信されます。

arg
[入力] 通知の種類によって異なります。

param
[入力] 通知の種類によって異なります。

pComponentData
[出力] IComponentData を実装するオブジェクトへのポインター。 IComponentData::Notify から通知が転送されない場合、このパラメーターは NULL になります。

pComponent
[出力] IComponent を実装するオブジェクトへのポインター。 IComponent::Notify から通知が転送されない場合、このパラメーターは NULL になります。

type
[入力] オブジェクトの種類を指定します。 次のいずれかの値を指定できます。

  • CCT_SCOPE: スコープ ウィンドウ コンテキストのデータ オブジェクト。

  • CCT_RESULT: 結果ウィンドウ コンテキストのデータ オブジェクト。

  • CCT_SNAPIN_MANAGER: スナップイン マネージャー コンテキストのデータ オブジェクト。

  • CCT_UNINITIALIZED: 無効な型のデータ オブジェクト。

CSnapInItemImpl::QueryPagesFor

スナップイン ノードでプロパティ ページがサポートされているかどうかを確認するために呼び出されます。

QueryPagesFor(DATA_OBJECT_TYPES type);

CSnapInItemImpl::SetMenuInsertionFlags

スナップイン オブジェクトのメニュー挿入フラグ (pInsertionAllowed で指定されます) を変更するには、この関数を呼び出します。

void SetMenuInsertionFlags(
    bool bBeforeInsertion,
    long* pInsertionAllowed);

パラメーター

bBeforeInsertion
[入力] 項目をコンテキスト メニューに追加する前に関数を呼び出す必要がある場合は 0 以外。それ以外の場合は 0。

pInsertionAllowed
[入出力] Microsoft 管理コンソール (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
[入力] 設定されるツールバー ボタンの ID。

fsState
[入力] ボタンの状態フラグ。 次のいずれかになります。

  • TBSTATE_CHECKED: ボタンが TBSTYLE_CHECKED スタイルであり、押されています。

  • TBSTATE_ENABLED: ボタンがユーザー入力を受け入れます。 この状態ではないボタンは、ユーザー入力を受け入れず、グレー表示されます。

  • TBSTATE_HIDDEN: ボタンが表示されず、ユーザー入力を受け入れできません。

  • TBSTATE_INDETERMINATE: ボタンがグレー表示されます。

  • TBSTATE_PRESSED: ボタンが押されています。

  • TBSTATE_WRAP: ボタンの後に改行が挿入されます。 ボタンは TBSTATE_ENABLED である必要もあります。

fsType
[入力] ボタンの状態フラグ。 次のいずれかになります。

  • TBSTYLE_BUTTON: 標準の押しボタンを作成します。

  • TBSTYLE_CHECK: ユーザーがクリックするたびに、押された状態と押されていない状態を切り替えるボタンを作成します。 ボタンが押された状態の場合、ボタンの背景色が異なります。

  • TBSTYLE_CHECKGROUP: グループ内の別のボタンが押されるまで押されたままになるチェック ボタンを作成します。

  • TBSTYLE_GROUP: グループ内の別のボタンが押されるまで押されたままになるボタンを作成します。

  • TBSTYLE_SEP: 区切り記号を作成して、ボタン グループ間に小さな間隔を挿入します。 このスタイルのボタンは、ユーザー入力を受け入れません。

CSnapInItemImpl::UpdateMenuState

メニュー項目をスナップイン オブジェクトのコンテキスト メニューに挿入する前に変更するには、この関数を呼び出します。

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

パラメーター

id
[入力] 設定されるメニュー項目の ID。

pBuf
[入力] 更新されるメニュー項目の文字列へのポインター。

flags
[入力] 新しい状態フラグを指定します。 これには、次のフラグの組み合わせを指定できます。

  • MF_POPUP: これがコンテキスト メニュー内のサブメニューであることを指定します。 lCommandIDIInsertionPointID として使用して、このサブメニューにメニュー項目、挿入ポイント、およびさらなるサブメニューを追加できます。

  • MF_BITMAP と MF_OWNERDRAW: これらのフラグは許可されておらず、戻り値は E_INVALIDARG になります。

  • MF_SEPARATOR: 水平分割線を描画します。 MF_SEPARATOR を設定してメニュー項目を追加できるのは、IContextMenuProvider のみです。

  • 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
更新されるツールバー ボタンのボタン ID を指定します。

fsState
ツールバー ボタンの状態を指定します。 この状態を設定する場合は、TRUE を返します。 これには、次のフラグの組み合わせを指定できます。

  • ENABLED: ボタンがユーザー入力を受け入れます。 この状態ではないボタンは、ユーザー入力を受け入れず、グレー表示されます。

  • CHECKED: ボタンが CHECKED スタイルであり、押されています。

  • HIDDEN: ボタンが表示されず、ユーザー入力を受け入れできません。

  • INDETERMINATE: ボタンがグレー表示されます。

  • BUTTONPRESSED: ボタンが押されています。

関連項目

クラスの概要