IDirectDrawClipper
COM公式ドキュメント
アプリケーションは、IDirectDrawClipper インターフェイスのメソッドを使用してクリップリストを管理します。このセクションは、このインターフェイスのメソッドのリファレンスです。
解説(Remarks)
IDirectDrawClipper インターフェイスのメソッドは、次のグループに分類できます。
| グループ | メソッド |
|---|---|
| メモリの割り当て | Initialize |
| クリップリスト | GetClipList, IsClipListChanged, SetClipList, および SetHWnd |
| ハンドル | GetHWnd |
LPDIRECTDRAWCLIPPER データ型を使用して、IDirectDrawClipper インターフェイスへのポインターを格納する変数を宣言できます。Ddraw.h ヘッダーファイルは、次のコードでこのデータ型を宣言しています。
typedef struct IDirectDrawClipper FAR *LPDIRECTDRAWCLIPPER;
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
DirectDrawClipper オブジェクトに関連付けられているクリップリストのコピーを取得します。クリップリストのサブセットを選択するには、クリップリストをクリップする矩形を渡すことができます。
| param0 | RECT* | inout | クリップ領域と交差させる境界矩形へのポインタである。NULLで全体となる。 |
| param1 | RGNDATA* | inout | クリップ矩形リストを受け取るRGNDATAバッファへのポインタである。NULLでサイズ取得となる。 |
| param2 | DWORD* | inout | バッファサイズを入出力するポインタ。必要バイト数を受け取る。 |
戻り値
メソッドが成功した場合、戻り値は DD_OK です。
失敗した場合、メソッドは次のいずれかのエラー値を返すことがあります。
- DDERR_GENERIC
- DDERR_INVALIDCLIPLIST
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
- DDERR_NOCLIPLIST
- DDERR_REGIONTOOSMALL
IDirectDrawClipper::SetHWnd メソッドによって、この DirectDrawClipper オブジェクトに以前関連付けられたウィンドウハンドルを取得します。
| param0 | HWND* | inout | このクリッパーに関連付けられたウィンドウハンドルを受け取る出力ポインタである。 |
戻り値
メソッドが成功した場合、戻り値は DD_OK です。
失敗した場合、メソッドは次のいずれかのエラー値を返すことがあります。
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
CoCreateInstance COM 関数を使用して作成された DirectDrawClipper オブジェクトを初期化します。
| param0 | IDirectDraw* | in | このクリッパーを関連付けるIDirectDrawオブジェクトへのポインタである。NULL可。 |
| param1 | DWORD | in | 初期化フラグ。現状は予約で0を指定する。 |
戻り値
メソッドが成功した場合、戻り値は DD_OK です。
失敗した場合、メソッドは次のいずれかのエラー値を返すことがあります。
- DDERR_ALREADYINITIALIZED
- DDERR_INVALIDPARAMS
解説(Remarks)
IDirectDrawClipper::Initialize メソッドは、コンポーネントオブジェクトモデル (COM) への準拠のために用意されています。DirectDrawClipper オブジェクトの作成に DirectDrawCreateClipper 関数または IDirectDraw7::CreateClipper メソッドを使用した場合、IDirectDrawClipper::Initialize メソッドは DDERR_ALREADYINITIALIZED を返します。
ウィンドウハンドルが DirectDrawClipper オブジェクトに関連付けられている場合に、クリップリストの状態を取得します。
| param0 | BOOL* | inout | クリップリストが変更されたか(TRUE/FALSE)を受け取る出力ポインタである。 |
戻り値
メソッドが成功した場合、戻り値は DD_OK です。
失敗した場合、メソッドは次のいずれかのエラー値を返すことがあります。
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
親 DirectDrawClipper オブジェクトがアタッチされているサーフェスで、IDirectDrawSurface7::Blt、IDirectDrawSurface7::BltBatch、および IDirectDrawSurface7::UpdateOverlay メソッドによって使用されるクリップリストを設定または削除します。
| param0 | RGNDATA* | inout | 設定するクリップ矩形リストを格納したRGNDATAへのポインタ。NULLでリスト削除となる。 |
| param1 | DWORD | in | 設定フラグ。現状は予約で0を指定する。 |
戻り値
メソッドが成功した場合、戻り値は DD_OK です。
失敗した場合、メソッドは次のいずれかのエラー値を返すことがあります。
- DDERR_CLIPPERISUSINGHWND
- DDERR_INVALIDCLIPLIST
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
- DDERR_OUTOFMEMORY
解説(Remarks)
ウィンドウハンドルが既に DirectDrawClipper オブジェクトに関連付けられている場合、クリップリストを設定することはできません。
IDirectDrawSurface7::BltFast メソッドはクリップを行えません。アタッチされたクリッパーを持つサーフェスに対して IDirectDrawSurface7::BltFast を呼び出すと、DDERR_UNSUPPORTED が返されます。
クリッパーオブジェクトがクリッピング情報を取得するために使用するウィンドウハンドルを設定します。
| param0 | DWORD | in | 設定フラグ。現状は予約で0を指定する。 |
| param1 | HWND | in | クリップ領域をウィンドウに連動させる対象ウィンドウハンドルである。 |
戻り値
メソッドが成功した場合、戻り値は DD_OK です。
失敗した場合、メソッドは次のいずれかのエラー値を返すことがあります。
- DDERR_INVALIDCLIPLIST
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
- DDERR_OUTOFMEMORY
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDirectDrawClipper "{6C14DB85-A733-11CE-A521-0020AF0BE560}" #usecom global IDirectDrawClipper IID_IDirectDrawClipper "{593817A0-7DB3-11CF-A2DE-00AA00B93356}" #comfunc global IDirectDrawClipper_GetClipList 3 var,var,var #comfunc global IDirectDrawClipper_GetHWnd 4 sptr #comfunc global IDirectDrawClipper_Initialize 5 sptr,int #comfunc global IDirectDrawClipper_IsClipListChanged 6 var #comfunc global IDirectDrawClipper_SetClipList 7 var,int #comfunc global IDirectDrawClipper_SetHWnd 8 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDirectDrawClipper "{6C14DB85-A733-11CE-A521-0020AF0BE560}" #usecom global IDirectDrawClipper IID_IDirectDrawClipper "{593817A0-7DB3-11CF-A2DE-00AA00B93356}" #comfunc global IDirectDrawClipper_GetClipList 3 sptr,sptr,sptr #comfunc global IDirectDrawClipper_GetHWnd 4 sptr #comfunc global IDirectDrawClipper_Initialize 5 sptr,int #comfunc global IDirectDrawClipper_IsClipListChanged 6 sptr #comfunc global IDirectDrawClipper_SetClipList 7 sptr,int #comfunc global IDirectDrawClipper_SetHWnd 8 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。