共用方式為


IExtendContextMenu::AddMenuItems 方法 (mmc.h)

IExtendContextMenu::AddMenuItems 方法可讓嵌入式管理單元將專案新增至操作功能表。

語法

HRESULT AddMenuItems(
  [in]      LPDATAOBJECT          piDataObject,
  [in]      LPCONTEXTMENUCALLBACK piCallback,
  [in, out] long                  *pInsertionAllowed
);

參數

[in] piDataObject

在新增專案之功能表之數據物件上的 IDataObject 介面指標。

[in] piCallback

IContextMenuCallback 的指標,可將專案新增至操作功能表。

[in, out] pInsertionAllowed

值,識別可以使用的 MMC 定義功能表項插入點。 這可以是下列旗標的組合:

CCM_INSERTIONALLOWED_TOP

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

CCM_INSERTIONALLOWED_NEW

專案可以插入 [新增] 子功能表。

CCM_INSERTIONALLOWED_TASK

專案可以插入 [所有工作] 子功能表。

CCM_INSERTIONALLOWED_VIEW

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

傳回值

這個方法可以傳回下列其中一個值。

備註

IExtendContextMenu::AddMenuItems 的實作通常會讀取節點類型,以及 piDataObject 上呼叫 IDataObject::GetDataHere 所需的任何其他參數,然後在 piCallback 上呼叫 IContextMenuCallback::AddItem,視需要新增操作功能表項。

您的嵌入式管理單元應該先檢查 pInsertionsAllowed 旗標是否有許可權,再嘗試在 MMC 定義的插入點新增功能表項。 例如,除非已設定CCM_INSERTIONALLOWED_NEW旗標,否則嵌入式管理單元不應該將功能表項新增至CCM_INSERTIONPOINTID_PRIMARY_NEW或CCM_INSERTIONPOINTID_3RDPARTY_NEW。

pInsertionsAllowed 旗標允許下列兩個功能:

如果使用者選取範圍專案,然後顯示其操作功能表,MMC 會同時提供嵌入式管理單元的 IComponentData 和 IComponent (擁有目前檢視) 實作新增功能表項的機會。 MMC 會呼叫嵌入式管理單元的 IComponent 實作所實作的 IExtendContextMenu::AddMenuItems 方法,以允許嵌入式管理單元將功能表項新增至 [ 檢視 ] 功能表。 MMC 會呼叫嵌入式管理單元的 IComponentData 所實作的 IExtendContextMenu::AddMenuItems 方法,以允許嵌入式管理單元將功能表項新增至所有其他功能表。 只有嵌入式管理單元的 IComponent 實作可以將專案新增至 [ 檢視 ] 功能表。

如果使用者在未先選取範圍專案的情況下顯示範圍專案的內容功能表,MMC 只會提供嵌入式管理單元的 IComponentData 實作機會,將功能表項新增至 [ 檢視 ] 功能表以外的所有功能表。 因此,如果使用者第一次選取專案,則 [ 檢視 ] 功能表只會針對範圍項目顯示。

來電者附註

AddMenuItems 方法不應該在 piDataObject 指標或 piCallback 指標上呼叫 AddRef,也不應該在傳回之後呼叫這些介面的方法。 相反地,在傳回之前,它應該對這些介面的方法進行所有必要的呼叫。 如果選取其中任何一個專案,您會在 IExtendContextMenu::Command 中將指標傳回 IDataObject,因此在此方法傳回之後不要保留此指標。 如果未選取任何專案,則不會通知功能表是否已關閉。 此外,請勿從 piCallback 查詢替代介面,因為其中一個方法 IContextMenuCallback::AddItem 應該就足夠。

規格需求

需求
最低支援的用戶端 Windows Vista
最低支援的伺服器 Windows Server 2008
目標平台 Windows
標頭 mmc.h

另請參閱

CONTEXTMENUITEM

IContextMenuCallback

IDataObject

IExtendContextMenu

使用操作功能表