Win32 API 日本語リファレンス
ホームUI.Shell › IDockingWindow

IDockingWindow

COM
IID012dd920-7b26-11d0-8ca9-00a0c92dbfe8継承元IOleWindow自前メソッド開始 vtbl5

公式ドキュメント

ドッキングウィンドウオブジェクトに対して、表示・非表示・削除の予定などの変更を通知するメソッドを公開します。このインターフェイスは、Windows エクスプローラーウィンドウのボーダー領域内にドッキング可能なウィンドウオブジェクトによって実装されます。

解説(Remarks)

IDockingWindowIOleWindow から派生しています。この継承を通じて IDockingWindow でも利用できるこれらのメソッドの詳細については、以下のトピックを参照してください。

IDockingWindow の追加メソッド
IDockingWindow::GetWindow
IDockingWindow::ContextSensitiveHelp

実装するタイミング

ブラウザーフレーム内にウィンドウを表示したい場合に IDockingWindow を実装します。これは通常、ツールバーなどのユーザーインターフェイスウィンドウに使用されます。

使用するタイミング

通常、IDockingWindow インターフェイスを直接使用することはありません。シェルブラウザーがこのインターフェイスを使用して、ブラウザーフレーム内のドッキングされたウィンドウをサポートします。

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 5 HRESULT ShowDW(BOOL fShow)

ドッキングウィンドウオブジェクトに対して、自身を表示または非表示にするよう指示します。

fShowBOOLinドッキングウィンドウオブジェクトがそのウィンドウを表示すべき場合は TRUE。ドッキングウィンドウオブジェクトがそのウィンドウを非表示にし、SetBorderSpaceDW をゼロ値で呼び出してボーダー領域を返却すべき場合は FALSE

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 6 HRESULT CloseDW(DWORD dwReserved)

ドッキングウィンドウオブジェクトに対して、まもなくフレームから削除されることを通知します。ドッキングウィンドウオブジェクトは、この時点で永続化すべき情報を保存する必要があります。

dwReservedDWORDin予約済み。このパラメーターは常にゼロである必要があります。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 7 HRESULT ResizeBorderDW(RECT* prcBorder, IUnknown* punkToolbarSite, BOOL fReserved)

ドッキングウィンドウオブジェクトに対して、フレームのボーダー領域が変更されたことを通知します。このメソッドへの応答として、IDockingWindow の実装は、ボーダー領域が不要な場合や変更が必要ない場合でも、SetBorderSpaceDW を呼び出す必要があります。

prcBorderRECT*inフレームで利用可能なボーダー領域を含む RECT 構造体へのポインター。
punkToolbarSiteIUnknown*inサイトの IUnknown インターフェイスへのポインター。ドッキングウィンドウオブジェクトは、このインターフェイスに対して QueryInterface メソッドを呼び出し、IID_IDockingWindowSite を要求する必要があります。ドッキングウィンドウオブジェクトは、そのインターフェイスを使用してボーダー領域を交渉します。このインターフェイスが不要になった時点で解放するのは、ドッキングウィンドウオブジェクトの責任です。
fReservedBOOLin予約済み。このパラメーターは常にゼロである必要があります。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

prcBorder パラメーターには、フレームで利用可能なボーダー領域全体が含まれます。ドッキングウィンドウオブジェクトは、自身のボーダー領域を交渉し、その情報を使用して自身を配置する必要があります。

たとえば、ドッキングウィンドウオブジェクトがボーダー領域の上部に 25 ピクセルを必要とする場合は、次の手順でこれを交渉する必要があります。

  1. BORDERWIDTHS 構造体を割り当て、その top メンバーを 25 に設定します。
  2. RequestBorderSpaceDW を呼び出して領域を要求します。
  3. RequestBorderSpaceDW によって要求が承認された場合は、SetBorderSpaceDW を呼び出して領域を割り当てます。
            その後、ドッキングウィンドウオブジェクトは、自身のウィンドウを prcBorder-&gt;left および prcBorder-&gt;top に配置できます。ドッキングウィンドウオブジェクトのウィンドウの幅は、prcBorder-&gt;right から prcBorder-&gt;left を減算することによって決定されます。その高さは、<a href="/previous-versions/windows/desktop/legacy/cc136564(v=vs.85)">BORDERWIDTHS</a> 構造体の <b>top</b> メンバーに含まれています。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IDockingWindow "{012DD920-7B26-11D0-8CA9-00A0C92DBFE8}"
#usecom global IDockingWindow IID_IDockingWindow "{}"
#comfunc global IDockingWindow_ShowDW          5 int
#comfunc global IDockingWindow_CloseDW         6 int
#comfunc global IDockingWindow_ResizeBorderDW  7 var,sptr,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。