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: これがコンテキスト メニュー内のサブメニューであることを指定します。
lCommandID
をIInsertionPointID
として使用して、このサブメニューにメニュー項目、挿入ポイント、およびさらなるサブメニューを追加できます。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: ボタンが押されています。