Win32 API 日本語リファレンス
ホームMedia.MediaPlayer › IWMPEffects2

IWMPEffects2

COM
IID695386ec-aa3c-4618-a5e1-dd9a8b987632継承元IWMPEffects自前メソッド開始 vtbl14

公式ドキュメント

IWMPEffects2 インターフェイス

メソッド 6

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

vtbl 14 HRESULT SetCore(IWMPCore* pPlayer)

SetCore メソッドは、ビジュアライゼーションがコアの Windows Media Player API にアクセスできるようにするために、Windows Media Player によって呼び出されます。

pPlayerIWMPCore*inIWMPCore インターフェイスへのポインター。

戻り値

このメソッドは HRESULT を返します。

解説(Remarks)

このメソッドを使用して、IWMPCore インターフェイスへのポインターを設定または解放できます。pPlayerNULL の場合、ビジュアライゼーションはシャットダウン中であり、コアに対して格納されているすべての参照を解放する必要があります。

このメソッドは、Windows Media Player がプロパティ ページを表示する目的でビジュアライゼーションをインスタンス化するときには呼び出されません。したがって、このメソッドは、ビジュアライゼーションが有効化され、Windows Media Player が通常どおりに読み込むときにのみ呼び出されるエントリ ポイントとして使用できます。

vtbl 15 HRESULT Create(HWND hwndParent)

Create メソッドは、ビジュアライゼーション ウィンドウをインスタンス化するために Windows Media Player によって呼び出されます。

hwndParentHWNDinビジュアライゼーション ウィンドウをホストする親ウィンドウへの HWND ハンドル。

戻り値

このメソッドは HRESULT を返します。

解説(Remarks)

IWMPEffects2 を実装するビジュアライゼーションは、クリップされたデバイス コンテキストで表示される場合を除いて、独自のウィンドウ内でレンダリングされます。クリップされたデバイス コンテキストで表示される場合は、ウィンドウレスでレンダリングされます。ウィンドウレスでレンダリングされるビジュアライゼーションの場合、Windows Media Player は hwndParent パラメーターに NULL 値を指定してこのメソッドを呼び出します。ビジュアライゼーションがウィンドウレス モードをサポートしていない場合 (たとえば Direct3D を使用している場合)、失敗を示す HRESULT 値を返す必要があります。この場合、ビジュアライゼーションは表示領域をクリップするスキンでは使用できません。

Microsoft DirectX® の Direct3D® コンポーネントを使用して Windows Media Player 用のビジュアライゼーションを作成する場合は、IDirect3D8::CreateDevice を呼び出すときに D3DCREATE_FPU_PRESERVE フラグを設定する必要があります。Direct3D を使用するビジュアライゼーションでこのフラグを設定しないと、予期しない結果が生じる可能性があります。

vtbl 16 HRESULT Destroy()

Destroy メソッドは、Create メソッドでインスタンス化されたビジュアライゼーション ウィンドウを破棄するために Windows Media Player によって呼び出されます。

戻り値

このメソッドは HRESULT を返します。

解説(Remarks)

このメソッドはウィンドウ付きビジュアライゼーションでのみ使用されます。ウィンドウレス ビジュアライゼーションは単に S_OK を返す必要があります。

vtbl 17 HRESULT NotifyNewMedia(IWMPMedia* pMedia)

NotifyNewMedia メソッドは、新しいメディア項目が読み込まれたことをビジュアライゼーションに通知するために Windows Media Player によって呼び出されます。

pMediaIWMPMedia*in新しいメディア項目を表す IWMPMedia インターフェイスへのポインター。

戻り値

このメソッドは HRESULT を返します。

vtbl 18 HRESULT OnWindowMessage(DWORD msg, WPARAM WParam, LPARAM LParam, LRESULT* plResultParam)

OnWindowMessage メソッドは、ウィンドウ メッセージをビジュアライゼーションに渡すために Windows Media Player によって呼び出されます。

msgDWORDinウィンドウ メッセージを識別する UINT
WParamWPARAMinウィンドウ メッセージ パラメーターを指定する WPARAM
LParamLPARAMinウィンドウ メッセージ パラメーターを指定する LPARAM
plResultParamLRESULT*inoutウィンドウ メッセージの結果コードを指定する LRESULT へのポインター。

戻り値

このメソッドは HRESULT を返します。

解説(Remarks)

実装では、ウィンドウ メッセージを処理した場合にのみ S_OK を返す必要があります。ウィンドウ メッセージを処理しなかった場合は、S_FALSE を返す必要があります。このメソッドを実装しない場合は、E_NOTIMPL を返します。

vtbl 19 HRESULT RenderWindowed(TimedLevel* pData, BOOL fRequiredRender)

RenderWindowed メソッドは、ウィンドウ付きビジュアライゼーションをレンダリングするために Windows Media Player によって呼び出されます。

pDataTimedLevel*inoutレンダリング情報を指定する TimedLevel 構造体へのポインター。
fRequiredRenderBOOLinビジュアライゼーションが自身を描画する必要があるかどうかを示す BOOL

戻り値

このメソッドは HRESULT を返します。

解説(Remarks)

このメソッドは、ウィンドウ付きビジュアライゼーションのレンダリングに使用されます。ウィンドウレス ビジュアライゼーションは S_OK を返し、代わりに IWMPEffects::Render メソッドを使用する必要があります。

fRequiredRender パラメーターは、たとえば別のウィンドウがその上にドラッグされたときなど、ビジュアライゼーションが自身を再描画する必要があることを通知します。この値が false の場合、現在のメディア項目が停止または一時停止しているときは、レンダリング コードを安全にスキップできます。これにより、CPU サイクルを不必要に消費することを回避できます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 指定が可能。