クイック アクセス ツール バー
クイック アクセス ツール バー (QAT) は、アプリケーションによって指定されるか、ユーザーによって選択されたコマンドのセットを公開する、カスタマイズ可能な小さなツール バーです。
はじめに
既定では、クイック アクセス ツール バー (QAT) はアプリケーション ウィンドウのタイトル バーにありますが、リボンの下に表示するように構成できます。 コマンドの公開に加えて、クイック アクセス ツール バー (QAT) には、既定のクイック アクセス ツール バー (QAT) コマンドの完全なセット (クイック アクセス ツール バー (QAT) に表示されるかどうか) とクイック アクセス ツール バー (QAT) とリボン オプションのセットを含むカスタマイズ可能なドロップダウン メニューも含まれています。
次のスクリーン ショットは、リボン クイック アクセス ツール バー (QAT) の例を示しています。
クイック アクセス ツール バー (QAT) は、アプリケーション (アプリケーションの既定値の一覧と呼ばれます) によって指定されるか、ユーザーによって選択された最大 20 個のコマンドの組み合わせで構成されます。 クイック アクセス ツール バー (QAT) には、リボン UI の他の場所では使用できない一意のコマンドを含めることができます。
注意
ほぼすべてのリボン コントロールでは、次のスクリーン ショットに示すコンテキスト メニューを使用して、関連するコマンドをクイック アクセス ツール バー (QAT) に追加できますが、 コンテキスト ポップアップ で公開されるコマンドでは、このコンテキスト メニューは提供されません。
クイック アクセス ツール バーを実装する
すべての Windows リボン フレームワーク コントロールと同様に、クイック アクセス ツール バー (QAT) を最大限に活用するには、リボン内でのプレゼンテーションを制御するマークアップ コンポーネントと、その機能を制御するコード コンポーネントの両方が必要です。
マークアップ
クイック アクセス ツール バー (QAT) コントロールは、 QuickAccessToolbar 要素を使用してマークアップで宣言され、コマンド ID に関連付けられます。 コマンド ID は、クイック アクセス ツール バー (QAT) を識別し、アプリケーションによって定義されたコマンド ハンドラーにバインドするために使用されます。
主要なクイック アクセス ツール バー (QAT) 機能の基本的なコマンド ハンドラーに加えて、オプションの CustomizeCommandNameQuickAccessToolbar 要素属性を宣言すると、フレームワークは、セカンダリ コマンド ハンドラーを定義する必要があるクイック アクセス ツール バー (QAT) ドロップダウン メニューのコマンド リストに [ その他 のコマンド] 項目を追加します。
リボン アプリケーション間で一貫性を保つには、 CustomizeCommandName コマンド ハンドラーでクイック アクセス ツール バー (QAT) のカスタマイズ ダイアログを起動することをお勧めします。 リボン フレームワークは UI の起動ポイントのみを提供するため、アプリケーションは、このコマンドのコールバック通知を受け取ったときにカスタマイズ ダイアログの実装を提供する必要があります。
次のスクリーン ショットは、[ その他のコマンド] コマンド項目を含むクイック アクセス ツール バー (QAT) ドロップダウン メニューを示しています。
クイック アクセス ツール バー (QAT) のアプリケーションの既定の一覧は、推奨されるコマンドの既定の一覧を識別する QuickAccessToolbar.ApplicationDefaults プロパティを使用して指定します。これらはすべて [クイック アクセス ツール バー (QAT)] ドロップダウン メニューに表示されます。
クイック アクセス ツール バー (QAT) ツール バーにアプリケーションの既定の一覧からコマンドを表示するには、各コントロール要素の ApplicationDefaults.IsChecked 属性の値 true
が である必要があります。 上の画像は、保存、元に戻す、やり直しコマンドに対してこの属性を にtrue
設定した結果を示しています。
QuickAccessToolbar.ApplicationDefaults では、 ボタン、 トグル ボタン、 チェック ボックスの 3 種類のリボン コントロールがサポートされています。
注意
Windows 8以降: すべてのギャラリー ベースのコントロール (ComboBox、InRibbonGallery、SplitButtonGallery、DropDownGallery) がサポートされています。
ギャラリー コントロール内の項目は、ホバー時の強調表示をサポートできます。 ホバー強調表示をサポートするには、ギャラリーが項目ギャラリーであり、VerticalMenuLayout 型の FlowMenuLayout を使用する必要があります。
次の例では、 QuickAccessToolbar 要素の基本的なマークアップを示します。
コードのこのセクションでは、 クイック アクセス ツール バー (QAT) 要素のコマンド宣言を示します。
<Command Name="cmdQAT"
Symbol="ID_QAT"
Id="40000"/>
<Command Name="cmdCustomizeQAT"
Symbol="ID_CUSTOM_QAT"
Id="40001"/>
コードのこのセクションでは、 クイック アクセス ツール バー (QAT) 要素のコントロール宣言を示します。
<Ribbon.QuickAccessToolbar>
<QuickAccessToolbar CommandName="cmdQAT"
CustomizeCommandName="cmdCustomizeQAT">
<QuickAccessToolbar.ApplicationDefaults>
<Button CommandName="cmdButton1"/>
<ToggleButton CommandName="cmdMinimize"
ApplicationDefaults.IsChecked="false"/>
</QuickAccessToolbar.ApplicationDefaults>
</QuickAccessToolbar>
</Ribbon.QuickAccessToolbar>
コード
リボン フレームワーク アプリケーションは、クイック アクセス ツール バー (QAT) を操作するためのコマンド ハンドラー コールバック メソッドを提供する必要があります。 このハンドラーは、クイック アクセス ツール バー (QAT) がカテゴリをサポートしていない点を除き、コマンド ギャラリー ハンドラーと同様の方法で動作します。 詳細については、「 ギャラリーの操作」を参照してください。
クイック アクセス ツール バー (QAT) コマンド コレクションは、UI_PKEY_ItemsSource プロパティ キーを使用して IUICollection オブジェクトとして取得されます。 実行時にクイック アクセス ツール バー (QAT) にコマンドを追加するには、 IUISimplePropertySet オブジェクトを IUICollection に追加します。
コマンド ギャラリーとは異なり、クイック アクセス ツール バー (QAT) IUISimplePropertySet オブジェクトにはコマンドの種類プロパティ (UI_PKEY_CommandType) は必要ありません。 ただし、コマンドはリボンまたはクイック アクセス ツール バー (QAT) アプリケーションの既定の一覧に存在する必要があります。実行時に新しいコマンドを作成してクイック アクセス ツール バー (QAT) に追加することはできません。
注意
リボン アプリケーションは、クイック アクセス ツール バー (QAT) IUICollection を IEnumUnknown から派生したカスタム コレクション オブジェクトに置き換えることはできません。
次の例は、基本的なクイック アクセス ツール バー (QAT) コマンド ハンドラーの実装を示しています。
/* QAT COMMAND HANDLER IMPLEMENTATION */
class CQATCommandHandler
: public CComObjectRootEx<CComMultiThreadModel>
, public IUICommandHandler
{
public:
BEGIN_COM_MAP(CQATCommandHandler)
COM_INTERFACE_ENTRY(IUICommandHandler)
END_COM_MAP()
// QAT command handler's Execute method
STDMETHODIMP Execute(UINT nCmdID,
UI_EXECUTIONVERB verb,
const PROPERTYKEY* key,
const PROPVARIANT* ppropvarValue,
IUISimplePropertySet* pCommandExecutionProperties)
{
UNREFERENCED_PARAMETER(nCmdID);
UNREFERENCED_PARAMETER(verb);
UNREFERENCED_PARAMETER(ppropvarValue);
UNREFERENCED_PARAMETER(pCommandExecutionProperties);
// Do not expect Execute callback for a QAT command
return E_NOTIMPL;
}
// QAT command handler's UpdateProperty method
STDMETHODIMP UpdateProperty(UINT nCmdID,
REFPROPERTYKEY key,
const PROPVARIANT* ppropvarCurrentValue,
PROPVARIANT* ppropvarNewValue)
{
UNREFERENCED_PARAMETER(nCmdID);
UNREFERENCED_PARAMETER(ppropvarNewValue);
HRESULT hr = E_NOTIMPL;
if (key == UI_PKEY_ItemsSource)
{
ATLASSERT(ppropvarCurrentValue->vt == VT_UNKNOWN);
CComQIPtr<IUICollection> spCollection(ppropvarCurrentValue->punkVal);
UINT nCount;
if (SUCCEEDED(hr = spCollection->GetCount(&nCount)))
{
if (nCount == 0)
{
// If the current Qat list is empty, then we will add a few items here.
UINT commands[] = { cmdSave, cmdUndo};
int count = _countof(commands);
for (int i = 0; i < count; i++)
{
PROPERTYKEY keys[1] = {UI_PKEY_CommandId};
CComObject<CItemProperties> *pItem = NULL;
if (SUCCEEDED(CComObject<CItemProperties>::CreateInstance(&pItem)))
{
PROPVARIANT vars[1];
InitPropVariantFromUInt32(commands[i], &vars[0]);
pItem->Initialize(NULL, _countof(vars), keys, vars);
CComPtr<IUnknown> spUnknown;
pItem->QueryInterface(&spUnknown);
spCollection->Add(spUnknown);
FreePropVariantArray(_countof(vars), vars);
}
}
}
else
{
// Do nothing if the Qat list is not empty.
// Return S_FALSE to indicate the callback succeeded.
return S_FALSE;
}
}
}
return hr;
}
};
QAT 永続化
クイック アクセス ツール バー (QAT) コマンド項目と設定は、 IUIRibbon::SaveSettingsToStream 関数と IUIRibbon::LoadSettingsFromStream 関数を使用して、アプリケーション セッション間で保持できます。 詳細については、「 リボンの状態を保持する」を参照してください。
クイック アクセス ツールバーのプロパティ
リボン フレームワークは、クイック アクセス ツール バー (QAT) コントロールの プロパティ キー のコレクションを定義します。
通常、クイック アクセス ツール バー (QAT) プロパティは、 IUIFramework::InvalidateUICommand メソッドの呼び出しによってコントロールに関連付けられている Command を無効にすることで、リボン UI で更新されます。 無効化イベントが処理され、 IUICommandHandler::UpdateProperty コールバック メソッドによって定義されたプロパティが更新されます。
IUICommandHandler::UpdateProperty コールバック メソッドは実行されず、アプリケーションは、フレームワークでプロパティが必要になるまで、更新されたプロパティ値を照会しました。 たとえば、タブがアクティブ化され、リボン UI にコントロールが表示されたときや、ツールヒントが表示されたときなどです。
注意
場合によっては、 IUIFramework::GetUICommandProperty メソッドを使用してプロパティを取得し、 IUIFramework::SetUICommandProperty メソッドを使用して設定できます。
次の表に、クイック アクセス ツール バー (QAT) コントロールに関連付けられているプロパティ キーの一覧を示します。
プロパティ キー | メモ |
---|---|
UI_PKEY_ItemsSource | IUIFramework::GetUICommandProperty をサポートします (IUIFramework::SetUICommandProperty はサポートされていません)。IUIFramework::GetUICommandProperty は、QAT 内のコマンドを表す IUICollection オブジェクトへのポインターを返します。 各コマンドは、その Command ID によって識別されます。これは、 IUISimplePropertySet::GetValue メソッドを呼び出し、プロパティ キー UI_PKEY_CommandIdを渡すことによって取得されます。 |
クイック アクセス ツール バー (QAT) ドロップダウン メニューの [ その他のコマンド ] コマンド項目に関連付けられているプロパティ キーはありません
関連トピック
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示