共用方式為


內容快顯

內容快顯是 Windows 功能區架構 ContextPopup 檢視 的主要控制件。 它是一種豐富的內容功能表系統,僅由架構公開為功能區實作的延伸模組,架構不會將內容快顯公開為獨立控件。

內容快顯的元件

內容快顯是內容功能表和 Mini-Toolbar 子控件的邏輯容器,分別透過 ContextMenuMiniToolbar 標記元素來公開:

每個子控件最多可以在內容快顯中出現一次。

下列螢幕快照說明內容快顯及其組成子控件。

顯示功能區內容UI元件的圖說文字的螢幕快照。

內容快顯純粹是概念性,不會公開任何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>

雖然內容快顯最多可以包含每個子控件的其中一個,但功能區標記中的多個 ContextMenuMiniToolbar 元素宣告都有效。 這可讓應用程式根據應用程式所定義的準則,支援各種內容功能表和 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 可能無法如預期呈現。

 

內容快顯屬性

沒有與內容快顯控件相關聯的屬性索引鍵。

Windows 功能區架構控制項連結庫

ContextPopup 範例