IWMPEffects2
COM公式ドキュメント
IWMPEffects2 インターフェイス
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
SetCore メソッドは、ビジュアライゼーションがコアの Windows Media Player API にアクセスできるようにするために、Windows Media Player によって呼び出されます。
| pPlayer | IWMPCore* | in | IWMPCore インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
このメソッドを使用して、IWMPCore インターフェイスへのポインターを設定または解放できます。pPlayer が NULL の場合、ビジュアライゼーションはシャットダウン中であり、コアに対して格納されているすべての参照を解放する必要があります。
このメソッドは、Windows Media Player がプロパティ ページを表示する目的でビジュアライゼーションをインスタンス化するときには呼び出されません。したがって、このメソッドは、ビジュアライゼーションが有効化され、Windows Media Player が通常どおりに読み込むときにのみ呼び出されるエントリ ポイントとして使用できます。
Create メソッドは、ビジュアライゼーション ウィンドウをインスタンス化するために Windows Media Player によって呼び出されます。
| hwndParent | HWND | in | ビジュアライゼーション ウィンドウをホストする親ウィンドウへの HWND ハンドル。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
IWMPEffects2 を実装するビジュアライゼーションは、クリップされたデバイス コンテキストで表示される場合を除いて、独自のウィンドウ内でレンダリングされます。クリップされたデバイス コンテキストで表示される場合は、ウィンドウレスでレンダリングされます。ウィンドウレスでレンダリングされるビジュアライゼーションの場合、Windows Media Player は hwndParent パラメーターに NULL 値を指定してこのメソッドを呼び出します。ビジュアライゼーションがウィンドウレス モードをサポートしていない場合 (たとえば Direct3D を使用している場合)、失敗を示す HRESULT 値を返す必要があります。この場合、ビジュアライゼーションは表示領域をクリップするスキンでは使用できません。
Microsoft DirectX® の Direct3D® コンポーネントを使用して Windows Media Player 用のビジュアライゼーションを作成する場合は、IDirect3D8::CreateDevice を呼び出すときに D3DCREATE_FPU_PRESERVE フラグを設定する必要があります。Direct3D を使用するビジュアライゼーションでこのフラグを設定しないと、予期しない結果が生じる可能性があります。
Destroy メソッドは、Create メソッドでインスタンス化されたビジュアライゼーション ウィンドウを破棄するために Windows Media Player によって呼び出されます。
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
このメソッドはウィンドウ付きビジュアライゼーションでのみ使用されます。ウィンドウレス ビジュアライゼーションは単に S_OK を返す必要があります。
NotifyNewMedia メソッドは、新しいメディア項目が読み込まれたことをビジュアライゼーションに通知するために Windows Media Player によって呼び出されます。
| pMedia | IWMPMedia* | in | 新しいメディア項目を表す IWMPMedia インターフェイスへのポインター。 |
戻り値
このメソッドは HRESULT を返します。
OnWindowMessage メソッドは、ウィンドウ メッセージをビジュアライゼーションに渡すために Windows Media Player によって呼び出されます。
| msg | DWORD | in | ウィンドウ メッセージを識別する UINT。 |
| WParam | WPARAM | in | ウィンドウ メッセージ パラメーターを指定する WPARAM。 |
| LParam | LPARAM | in | ウィンドウ メッセージ パラメーターを指定する LPARAM。 |
| plResultParam | LRESULT* | inout | ウィンドウ メッセージの結果コードを指定する LRESULT へのポインター。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
実装では、ウィンドウ メッセージを処理した場合にのみ S_OK を返す必要があります。ウィンドウ メッセージを処理しなかった場合は、S_FALSE を返す必要があります。このメソッドを実装しない場合は、E_NOTIMPL を返します。
RenderWindowed メソッドは、ウィンドウ付きビジュアライゼーションをレンダリングするために Windows Media Player によって呼び出されます。
| pData | TimedLevel* | inout | レンダリング情報を指定する TimedLevel 構造体へのポインター。 |
| fRequiredRender | BOOL | in | ビジュアライゼーションが自身を描画する必要があるかどうかを示す BOOL。 |
戻り値
このメソッドは HRESULT を返します。
解説(Remarks)
このメソッドは、ウィンドウ付きビジュアライゼーションのレンダリングに使用されます。ウィンドウレス ビジュアライゼーションは S_OK を返し、代わりに IWMPEffects::Render メソッドを使用する必要があります。
fRequiredRender パラメーターは、たとえば別のウィンドウがその上にドラッグされたときなど、ビジュアライゼーションが自身を再描画する必要があることを通知します。この値が false の場合、現在のメディア項目が停止または一時停止しているときは、レンダリング コードを安全にスキップできます。これにより、CPU サイクルを不必要に消費することを回避できます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMPEffects2 "{695386EC-AA3C-4618-A5E1-DD9A8B987632}" #usecom global IWMPEffects2 IID_IWMPEffects2 "{}" #comfunc global IWMPEffects2_SetCore 14 sptr #comfunc global IWMPEffects2_Create 15 sptr #comfunc global IWMPEffects2_Destroy 16 #comfunc global IWMPEffects2_NotifyNewMedia 17 sptr #comfunc global IWMPEffects2_OnWindowMessage 18 int,sptr,sptr,var #comfunc global IWMPEffects2_RenderWindowed 19 var,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWMPEffects2 "{695386EC-AA3C-4618-A5E1-DD9A8B987632}" #usecom global IWMPEffects2 IID_IWMPEffects2 "{}" #comfunc global IWMPEffects2_SetCore 14 sptr #comfunc global IWMPEffects2_Create 15 sptr #comfunc global IWMPEffects2_Destroy 16 #comfunc global IWMPEffects2_NotifyNewMedia 17 sptr #comfunc global IWMPEffects2_OnWindowMessage 18 int,sptr,sptr,sptr #comfunc global IWMPEffects2_RenderWindowed 19 sptr,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。