CONTEXTMENUITEM2 結構 (mmc.h)
CONTEXTMENUITEM2結構是在 MMC 2.0 中引進。
CONTEXTMENUITEM2 結構會傳遞至 IContextMenuCallback2::AddItem 方法或 IContextMenuProvider::AddItem 方法, (繼承自 IContextMenuCallback) ,以定義新的功能表項、子功能表或插入點。 操作功能表是從根目錄建置,每個新項目都會移至插入新專案之子功能表或插入點的結尾。 CONTEXTMENUITEM2結構會取代 strLanguageIndependentName 成員以外的 CONTEXTMENUITEM 結構 (,CONTEXTMENUITEM2的所有成員都位於 CONTEXTMENUITEM) 。
語法
typedef struct _CONTEXTMENUITEM2 {
LPWSTR strName;
LPWSTR strStatusBarText;
LONG lCommandID;
LONG lInsertionPointID;
LONG fFlags;
LONG fSpecialFlags;
LPWSTR strLanguageIndependentName;
} CONTEXTMENUITEM2;
成員
strName
包含功能表項名稱或子選單之 Null 終止字串的指標。 除了分隔符或插入點之外,這個成員不能是 NULL 。
strStatusBarText
Null 終止字串的指標,其中包含醒目提示此項目時顯示在狀態列上的文字。 此成員可以是 NULL。
lCommandID
值,指定功能表項的命令標識碼。 如果 IExtendContextMenu::AddMenuItems 新增功能表項,然後選取 , lCommandID 是傳回 IExtendContextMenu::Command 的命令標識符參數。 如果 IContextMenuProvider 介面新增此功能表項,然後選取,這是傳回給 IContextMenuProvider::ShowContextMenu 所選取的命令標識符。 如果這是在 fSpecialFlags) 中設定插入點 (CCM_SPECIAL_INSERTION_POINT,或在 fFlags) 中設定子功能表 (MF_POPUP,請在後續呼叫中使用 lCommandID 作為 lInsertionPointID (,請參閱下列清單) 。 請仔細閱讀下列討論,因為新插入點標識碼中的特定位必須開啟,而其他位必須關閉。
命令標識碼中的下列位需要特殊處理不是插入點或子功能表的專案。
CCM_COMMANDID_MASK_RESERVED (0xFFFF0000)
設定這些位時,無法新增插入點和子功能表以外的專案。
插入點標識碼中的下列位需要特別處理 (fSpecialFlags和 CCM_SPECIAL_INSERTION_POINT) 或子功能表的專案, (fFlags 和 MF_POPUP) 。
CCM_INSERTIONPOINTID_MASK_SPECIAL (0xFFFF0000)
特殊行為。 嵌入式管理單元可以視需要使用其他位。
CCM_INSERTIONPOINTID_MASK_SHARED (0x80000000)
這些插入點和子功能表會在操作功能表的建立者、主要延伸模組和第三方延伸模組之間共用。 新增至共用插入點或子功能表的專案可供操作功能表、主要延伸模組和第三方延伸模組的建立者使用。
如果未設定此位, IContextMenuProvider 介面和每個延伸模組都可以使用相同的標識符。 每個標識碼都參考不同的插入點或子功能表。
只有操作功能表建立者和主要嵌入式管理單元可以建立共用插入點或子功能表。
CCM_INSERTIONPOINTID_MASK_CREATE_PRIMARY (0x40000000)
此位必須設定為主要嵌入式管理單元所建立的共用插入點和子功能表,而不是針對操作功能表建立者所建立的插入點和子功能表進行設定。 這可防止共用插入點和子功能表的兩個來源之間的標識符衝突。
CCM_INSERTIONPOINTID_MASK_ADD_PRIMARY (0x20000000)
允許主要嵌入式管理單元將專案新增至共用插入點或子功能表。
CCM_INSERTIONPOINTID_MASK_ADD_3RDPARTY (0x10000000)
允許延伸模組嵌入式管理單元將專案新增至共用插入點或子功能表。
CCM_INSERTIONPOINTID_MASK_RESERVED (0x0FFF0000)
插入點或子功能表無法與這個值集一起加入。
lInsertionPointID
值,指定應該在操作功能表中新增專案的位置。 嵌入式管理單元只能將專案新增至功能表建立者或主要嵌入式管理單元所建立的插入點。 以下是 MMC 在範圍窗格和清單檢視結果窗格之項目的預設操作選單中所建立的插入點:
0 (零)
lInsertionPointID 為 0 指的是此操作功能表的根選單。 值0可以與 CCM_INSERTIONPOINTID_ROOT_MENU交替使用。 請注意,只允許 IContextMenuProvider 直接將專案新增至根功能表。 延伸模組只能透過 IContextMenuProvider 或 MMC,將專案新增至插入點和子功能表。
CCM_INSERTIONPOINTID_PRIMARY_TOP (0xA0000000)
主要嵌入式管理單元可以使用這個插入點,將專案新增至主操作功能表的頂端。
CCM_INSERTIONPOINTID_PRIMARY_NEW (0xA0000001)
主要嵌入式管理單元可以使用這個插入點,將專案新增至 [新增 ] 子功能表的頂端。 [ 新增 ] 子功能表可在範圍和結果窗格的內容功能表中使用。
CCM_INSERTIONPOINTID_PRIMARY_TASK (0xA0000002)
主要嵌入式管理單元可以使用這個插入點,將專案新增至 [所有工作] 子功能表的頂端。 [ 所有工作 ] 子功能表可在範圍和結果窗格的內容功能表中使用。
CCM_INSERTIONPOINTID_PRIMARY_VIEW (0xA0000003)
主要嵌入式管理單元可以使用這個插入點,將專案新增至 [ 檢視 ] 功能表。 如果使用者單擊工具列上的 [ 檢視 ] 下拉功能表,則會出現此插入點,但 [新增] 和 [所有工作] 插入點不會出現。
CCM_INSERTIONPOINTID_3RDPARTY_NEW (0x90000001)
延伸模組嵌入式管理單元可以使用這個插入點,將專案新增至 [新增 ] 子功能表底部。 [新增] 子功能表僅適用於範圍窗格中的內容功能表,而不適用於結果窗格中的內容功能表。
CCM_INSERTIONPOINTID_3RDPARTY_TASK (0x90000002)
擴充功能嵌入式管理單元可以使用這個插入點,將專案新增至 [所有工作 ] 子功能表的底部。
CCM_INSERTIONPOINTID_ROOT_MENU (0x80000000)
IContextMenuProvider 可以使用這個插入點,將專案新增至根功能表。
除了 IContextMenuProvider 新增的插入點以外,主要延伸模組和第三方延伸模組都無法新增專案至根功能表。
fFlags
值,指定下列一或多個樣式旗標:
MF_POPUP
建立的專案是操作功能表內的子功能表。 功能表項、插入點和其他子功能表可以新增至建立的子功能表;新的功能表項、子功能表或插入點應該使用建立的子功能表的 lCommandID 成員做為 lInsertionPointID 成員值。
MF_BITMAP
不支援此旗標; IContextMenuCallback2::AddItem 會 傳回E_INVALIDARG。
MF_OWNERDRAW
不支援此旗標; IContextMenuCallback2::AddItem 會 傳回E_INVALIDARG。
MF_SEPARATOR
繪製水準分隔線。
只有 IContextMenuProvider 可以新增 MF_SEPARATOR 設定的功能表項。
下列旗標的運作方式與 Windows API 中的旗標相同。
MF_CHECKED
選取功能表項。
MF_DISABLED
停用功能表項,使其無法選取,但旗標不會使功能表項變暗。
MF_ENABLED
啟用功能表項,使其可以選取,並從其暗灰色狀態還原。
MF_GRAYED
停用功能表項,使其變暗,因此無法選取它。
MF_MENUBARBREAK
與功能表欄 的MF_MENUBREAK 旗標相同。 對於下拉功能表、子功能表或快捷方式功能表,垂直線會將新數據行與舊數據行分開。
MF_MENUBREAK
Places 功能表欄的新行 (項目) ,或在下拉功能表、子功能表或快捷) 功能表 (的新數據行 (,而不分隔數據行。
MF_UNCHECKED
不會選取預設) (專案。
下列旗標群組無法一起使用:
- MF_DISABLED、 MF_ENABLED和 MF_GRAYED
- MF_MENUBARBREAK 和 MF_MENUBREAK
- MF_CHECKED 和 MF_UNCHECKED
fSpecialFlags
值,指定下列一或多個旗標:
CCM_SPECIAL_SEPARATOR (0x0001)
忽略 lInsertionPointID 以外的所有其他參數。 將分隔符新增至功能表結尾或在指定的插入點。 不會顯示位於功能表或子選單頂端或底部的分隔符。 沒有功能表項的分隔符將會折疊成單一分隔符。
只有 IContextMenuProvider 可以新增分隔符、特殊或其他方式。
CCM_SPECIAL_SUBMENU (0x0002)
如果這個子功能表是空的,它會顯示為暗灰色;這隻適用於 MF_POPUP 專案。
CCM_SPECIAL_DEFAULT_ITEM (0x0004)
這是預設功能表項。 如果有多個功能表項指定此旗標,則每個子功能表中的最後一個專案會優先使用。
CCM_SPECIAL_INSERTION_POINT (0x0008)
忽略 lCommandID 和 lInsertionPointID 以外的所有其他參數。 此旗標會在 lInsertionPointID 所識別的插入點或子選單結尾建立新的插入點。 新的功能表項、子功能表或插入點可以新增至建立的插入點;新的功能表項、子功能表或插入點應該使用建立的插入點 lCommandID 成員做為 lInsertionPointID 成員值。
CCM_SPECIAL_TESTONLY = 0x0010
驗證項目參數,但不要新增功能表項。 傳回結果碼,指出新增作業是否成功。
strLanguageIndependentName
與語言無關的功能表項名稱。 取得 MenuItem.LanguageIndependentName 屬性,以在 MMC 2.0 Automation 物件模型應用程式中擷取此值。 strLanguageIndependentName 成員不能是 NULL 或空字串,除非加入分隔符或插入點;否則,IContextMenuCallback::AddItem 方法將會失敗,並E_INVALIDARG做為傳回值。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista |
最低支援的伺服器 | Windows Server 2008 |
標頭 | mmc.h |