IUIRibbon
COM公式ドキュメント
IUIRibbon インターフェイスは Windows リボン フレームワークによって実装され、リボンの設定とプロパティを指定する機能を提供します。
解説(Remarks)
リボンは、アプリケーション メニュー、クイック アクセス ツール バー (QAT)、 タブ (コアおよびコンテキスト)、グループ (コントロールのコンテナー)、および高機能なコンテキスト メニュー システム (コンテキスト ポップアップ) などの複数のコンポーネントで構成されます。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
リボンの高さを取得します。
| cy | DWORD* | out | リボンの高さ (ピクセル単位)。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
cy に返される値は、ホスト ウィンドウの幅やリボンのマークアップで宣言されたレイアウト テンプレートなど (これらに限定されません) の複数の要因に依存します。
例
次の例では、IUIRibbon::GetHeight メソッドを使用してリボンの高さを取得し、コンテキスト ポップアップ コントロールの表示位置を計算する方法を示します。
void GetDisplayLocation(POINT &pt, HWND hWnd)
{
if (pt.x == -1 && pt.y == -1)
{
HRESULT hr = E_FAIL;
// Display the menu in the upper-left corner of the client area, below the ribbon.
IUIRibbon* pRibbon;
hr = g_pFramework->GetView(0, IID_PPV_ARGS(&pRibbon));
if (SUCCEEDED(hr))
{
UINT32 uRibbonHeight = 0;
hr = pRibbon->GetHeight(&uRibbonHeight);
if (SUCCEEDED(hr))
{
pt.x = 0;
pt.y = uRibbonHeight;
// Convert client coordinates of a specified point to screen coordinates.
ClientToScreen(hWnd, &pt);
}
pRibbon->Release();
}
if (FAILED(hr))
{
// Default to just the upper-right corner of the entire screen.
pt.x = 0;
pt.y = 0;
}
}
}
バイナリ ストリームからリボンの設定を読み込みます。
| pStream | IStream* | in | IStream オブジェクトへのポインター。 |
戻り値
解説(Remarks)
ストリームはホスト アプリケーションから提供されます。
Windows リボン フレームワークが有効なストリームを読み込めない場合は、代わりに既定のリボン レイアウトが描画されます。
LoadSettingsFromStream メソッドは、クイック アクセス ツール バー (QAT) の項目など、リボンの状態をアプリケーションのインスタンス間で永続化するのに役立ちます。
リボンの設定をバイナリ ストリームに書き込みます。
| pStream | IStream* | in | IStream オブジェクトへのポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
ストリームは、適切に保存できるようホスト アプリケーションに引き渡されます。
SaveSettingsToStream メソッドは、クイック アクセス ツール バー (QAT) の項目など、リボンの状態をアプリケーションのインスタンス間で永続化するのに役立ちます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IUIRibbon "{803982AB-370A-4F7E-A9E7-8784036A6E26}" #usecom global IUIRibbon IID_IUIRibbon "{}" #comfunc global IUIRibbon_GetHeight 3 var #comfunc global IUIRibbon_LoadSettingsFromStream 4 sptr #comfunc global IUIRibbon_SaveSettingsToStream 5 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IUIRibbon "{803982AB-370A-4F7E-A9E7-8784036A6E26}" #usecom global IUIRibbon IID_IUIRibbon "{}" #comfunc global IUIRibbon_GetHeight 3 sptr #comfunc global IUIRibbon_LoadSettingsFromStream 4 sptr #comfunc global IUIRibbon_SaveSettingsToStream 5 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。