內容快顯
內容快顯是 Windows 功能區架構 ContextPopup 檢視 的主要控制件。 它是一種豐富的內容功能表系統,僅由架構公開為功能區實作的延伸模組,架構不會將內容快顯公開為獨立控件。
內容快顯的元件
內容快顯是內容功能表和 Mini-Toolbar 子控件的邏輯容器,分別透過 ContextMenu 和 MiniToolbar 標記元素來公開:
- ContextMenu 會公開命令和資源庫的功能表。
- MiniToolbar 會公開各種命令、資源庫和複雜控件的浮動工具列,例如 字型控件 和 下拉式方塊。
每個子控件最多可以在內容快顯中出現一次。
下列螢幕快照說明內容快顯及其組成子控件。
內容快顯純粹是概念性,不會公開任何UI功能本身,例如定位或重設大小。
注意
內容快顯通常會在感興趣的物件上按下滑鼠右鍵(或透過鍵盤快捷方式SHIFT+F10)來顯示。 不過,應用程式會定義顯示內容快顯所需的步驟。
實作內容快顯
與其他 Windows 功能區架構控制元件類似,內容快顯是透過標記元件來實作,以指定其簡報詳細數據和控管其功能的程式代碼元件。
下表列出每個內容快顯子控件所支援的控件。
控制 | Mini-Toolbar | 作功能表 |
---|---|---|
按鈕 | x | x |
複選框 | x | x |
下拉式方塊 | x | |
Drop-Down 按鈕 | x | x |
Drop-Down 色彩選擇器 | x | x |
Drop-Down 資源庫 | x | x |
字型控件 | x | |
[說明] 按鈕 | ||
In-Ribbon 資源庫 | ||
微調器 | ||
分割按鈕 | 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>
作功能表
下列範例示範 ContextMenu 元素的基本標記,其中包含三個 Button 控件。
注意
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 可能無法如預期呈現。
內容快顯屬性
沒有與內容快顯控件相關聯的屬性索引鍵。
相關主題