內容快顯
內容快顯是 Windows 功能區架構 之 CoNtextPopup 檢視 中的主要控制項。 它是一種豐富的操作功能表系統,只有架構公開為功能區實作的延伸模組,架構不會將內容快顯公開為獨立的控制項。
內容快顯的元件
快顯功能表和Mini-Toolbar子控制項的邏輯容器,分別透過 CoNtextMenu 和 MiniToolbar 標記元素公開:
- CoNtextMenu會公開命令和資源庫的功能表。
- MiniToolbar會公開各種命令、資源庫和複雜控制項的浮動工具列,例如字型控制項和下拉式方塊。
每個子控制項最多可以在內容快顯中出現一次。
下列螢幕擷取畫面說明內容快顯及其組成子控制項。
內容快顯只是概念性,不會公開任何 UI 功能本身,例如定位或調整大小。
注意
內容快顯通常會以滑鼠右鍵按一下滑鼠 (或透過感興趣的物件上的鍵盤快速鍵 SHIFT+F10) 來顯示。 不過,應用程式會定義顯示內容快顯所需的步驟。
實作內容快顯
與其他 Windows 功能區架構控制項類似,內容快顯是透過指定其簡報詳細資料和控管其功能的程式碼元件來實作。
下表列出每個內容快顯子控制項所支援的控制項。
控制 | Mini-Toolbar | 操作功能表 |
---|---|---|
按鈕 | x | x |
核取方塊 | x | x |
下拉式方塊 | x | |
下拉式按鈕 | x | x |
下拉式清單色彩選擇器 | x | x |
下拉式資源庫 | x | x |
字型控制項 | x | |
說明按鈕 | ||
功能區內資源庫 | ||
Spinner | ||
Split Button | x | x |
分割按鈕庫 | x | x |
切換按鈕 | x | x |
加成
每個內容快顯子控制項都必須在標記中個別宣告。
Mini-Toolbar
將控制項新增至內容快顯迷你工具列時,應該考慮下列兩個建議:
- 控制項應該可高度辨識,並提供明顯的功能。 熟悉度是關鍵,因為不會針對Mini-Toolbar控制項公開卷標和工具提示。
- 控制項公開的每個命令都應該顯示在功能區 UI 的其他地方。 Mini-Toolbar不支援鍵盤流覽。
下列範例示範包含三個Button控制項之 MiniToolbar元素的基本標記。
注意
迷你工具列中的每個控制項列都會指定一個 MenuGroup 元素。
<MiniToolbar Name="MiniToolbar">
<MenuGroup>
<Button CommandName="cmdButton1" />
<Button CommandName="cmdButton2" />
<Button CommandName="cmdButton3" />
</MenuGroup>
</MiniToolbar>
操作功能表
下列範例示範包含三個Button控制項之 CoNtextMenu元素的基本標記。
注意
MenuGroup元素中的每個控制項集都會以操作功能表中的水準列分隔。
<ContextMenu Name="ContextMenu">
<MenuGroup>
<Button CommandName="cmdCut" />
<Button CommandName="cmdCopy" />
<Button CommandName="cmdPaste" />
</MenuGroup>
</ContextMenu>
雖然內容快顯最多可以包含每個子控制項的其中一個,但是功能區標記中的多個 CoNtextMenu 和 MiniToolbar 元素宣告都是有效的。 這可讓應用程式根據應用程式所定義的準則,支援各種內容功能表和Mini-Toolbar控制項的組合,例如工作區內容。
如需詳細資訊,請參閱 CoNtextMap 元素。
下列範例示範 CoNtextPopup 元素的基本標記。
<ContextPopup>
<ContextPopup.MiniToolbars>
<MiniToolbar Name="MiniToolbar">
<MenuGroup>
<Button CommandName="cmdButton1" />
<Button CommandName="cmdButton2" />
<Button CommandName="cmdButton3" />
</MenuGroup>
</MiniToolbar>
</ContextPopup.MiniToolbars>
<ContextPopup.ContextMenus>
<ContextMenu Name="ContextMenu">
<MenuGroup>
<Button CommandName="cmdCut" />
<Button CommandName="cmdCopy" />
<Button CommandName="cmdPaste" />
</MenuGroup>
</ContextMenu>
</ContextPopup.ContextMenus>
<ContextPopup.ContextMaps>
<ContextMap CommandName="cmdContextMap" ContextMenu="ContextMenu" MiniToolbar="MiniToolbar"/>
</ContextPopup.ContextMaps>
</ContextPopup>
程式碼
若要叫用內容快顯,當功能區應用程式的最上層視窗收到WM_CONTEXTMENU通知時,會呼叫 IUICoNtextualUI::ShowAtLocation 方法。
此範例示範如何在功能區應用程式的 WndProc () 方法中處理WM_CONTEXTMENU通知。
case WM_CONTEXTMENU:
POINT pt;
POINTSTOPOINT(pt, lParam);
// ShowContextualUI method defined by the application.
ShowContextualUI (pt, hWnd);
break;
下列範例示範功能區應用程式如何使用 IUICoNtextualUI::ShowAtLocation 方法,在特定畫面位置顯示內容快顯。
GetCurrentCoNtext () 的值如 cmdContextMap
上述標記範例中所定義。
g_pApplication是 IUIFramework 介面的參考。
HRESULT ShowContextualUI(POINT& ptLocation, HWND hWnd)
{
GetDisplayLocation(ptLocation, hWnd);
HRESULT hr = E_FAIL;
IUIContextualUI* pContextualUI = NULL;
if (SUCCEEDED(g_pFramework->GetView(
g_pApplication->GetCurrentContext(),
IID_PPV_ARGS(&pContextualUI))))
{
hr = pContextualUI->ShowAtLocation(ptLocation.x, ptLocation.y);
pContextualUI->Release();
}
return hr;
}
在關閉內容快顯之前,可以釋出 IUICoNtextualUI 的參考,如上述範例所示。 不過,參考必須在某個時間點釋放,以避免記憶體流失。
警告
Mini-Toolbar具有以滑鼠指標鄰近性為基礎的內建淡化效果。 基於這個理由,建議盡可能將Mini-Toolbar顯示到滑鼠指標附近。 否則,由於衝突的顯示機制,Mini-Toolbar可能不會如預期般呈現。
內容快顯屬性
沒有與內容快顯控制項相關聯的屬性索引鍵。
相關主題