共用方式為


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 物件所使用的 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
[in] IContextMenuCallback 可將專案新增至操作功能表的指標。

pInsertionAllowed
[in, out]識別Microsoft管理控制台 (MMC)定義的功能表項插入點,這些插入點可供使用。 這可以是下列旗標的組合:

  • CCM_INSERTIONALLOWED_TOP專案可以插入操作功能表頂端。

  • CCM_INSERTIONALLOWED_NEW專案可以插入 [建立新] 子功能表。

  • CCM_INSERTIONALLOWED_TASK專案可以插入Task子功能表。

  • CCM_INSERTIONALLOWED_VIEW專案可以插入工具列檢視功能表或結果窗格操作功能表的 [檢視] 子選單中。

type
[in]指定物件的類型。 它可以有下列其中一個值:

  • CCT_SCOPE範圍窗格內容的數據物件。

  • CCT_RESULT結果窗格內容的數據物件。

  • CCT_SNAPIN_MANAGER嵌入式管理單元管理員內容的 Data 物件。

  • CCT_UNINITIALIZED Data 物件的類型無效。

CSnapInItemImpl::Command

這個方法會實作 Win32 函式 IExtendContextMenu::Command

Command(long lCommandID, DATA_OBJECT_TYPES type);

參數

lCommandID
[in]指定功能表項的命令標識碼。

type
[in]指定物件的類型。 它可以有下列其中一個值:

  • CCT_SCOPE範圍窗格內容的數據物件。

  • CCT_RESULT結果窗格內容的數據物件。

  • CCT_SNAPIN_MANAGER嵌入式管理單元管理員內容的 Data 物件。

  • 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結果窗格內容的數據物件。

  • CCT_SNAPIN_MANAGER嵌入式管理單元管理員內容的 Data 物件。

  • CCT_UNINITIALIZED Data 物件的類型無效。

CSnapInItemImpl::CSnapInItemImpl

建構 CSnapInItemImpl 物件。

CSnapInItemImpl();

CSnapInItemImpl::FillData

呼叫此函式以擷取專案的相關信息。

FillData(CLIPFORMAT cf, LPSTREAM pStream);

參數

cf
[in]剪貼簿的格式(文字、RTF 或具有 OLE 專案的 RTF 文字)。

pStream
[in]包含對象數據的數據流指標。

備註

若要正確實作此函式,請根據 cf指示的剪貼簿格式,將正確的資訊複製到數據流 (pStream)。

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]對象的結構的CSnapInItemImpl指標SCOPEDATAITEM

CSnapInItemImpl::GetResultPaneInfo

呼叫此函式以擷 RESULTDATAITEM 取嵌入式管理單元的結構。

GetResultPaneInfo (RESULTDATAITEM* pResultDataItem);

參數

pResultDataItem
[out]對象的結構的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
[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之物件的指標。 如果通知不是從 IComponentData::Notify轉送,則此參數為 NULL。

pComponent
[out]實作 IComponent之物件的指標。 如果通知不是從 IComponent::Notify轉送,則此參數為 NULL。

type
[in]指定物件的類型。 它可以有下列其中一個值:

  • CCT_SCOPE範圍窗格內容的數據物件。

  • CCT_RESULT結果窗格內容的數據物件。

  • CCT_SNAPIN_MANAGER嵌入式管理單元管理員內容的 Data 物件。

  • 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]識別Microsoft管理控制台 (MMC)定義的功能表項插入點,這些插入點可供使用。 這可以是下列旗標的組合:

  • CCM_INSERTIONALLOWED_TOP專案可以插入操作功能表頂端。

  • CCM_INSERTIONALLOWED_NEW專案可以插入 [建立新] 子功能表。

  • CCM_INSERTIONALLOWED_TASK專案可以插入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。 這可以是下列旗標的組合:

  • ENABLED 按鈕接受用戶輸入。 沒有此狀態的按鈕不接受使用者輸入,且呈現灰色。

  • CHECKED 按鈕具有 CHECKED 樣式,並正在按下。

  • HIDDEN 按鈕不可見且無法接收使用者輸入。

  • 不確定 按鈕呈現灰色。

  • BUTTONPRESSED 正在按下按鈕。

另請參閱

類別概觀