ICompositionDrawingSurfaceInterop
COM公式ドキュメント
RECT で描画対象の領域を指定して、サーフェスオブジェクトへの描画を可能にするネイティブ相互運用インターフェイスです。このインターフェイスは C++ でのみ利用できます。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
サーフェスへの描画を開始します。
| updateRect | RECT* | inoptional | 更新するサーフェスの領域です。更新矩形はサーフェスの範囲内になければなりません。nullptr を指定すると、サーフェス全体を更新することを示します。 |
| iid | GUID* | in | 取得するインターフェイスの識別子です。 |
| updateObject | void** | out | iid パラメーターで指定した型のインターフェイスポインターを受け取ります。このパラメーターを NULL にすることはできません。 |
| updateOffset | POINT* | out | アプリケーションが更新後のコンテンツを描画すべきサーフェス内のオフセットです。このオフセットは更新矩形の左上隅を指します。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
サーフェスオブジェクトへの描画の終了を示します。
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
サーフェスのサイズを変更します。
| sizePixels | SIZE | in | サーフェスの幅と高さ(ピクセル単位)です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
論理サーフェスの矩形領域をスクロールします。
| scrollRect | RECT* | inoptional | スクロールするサーフェスの矩形領域で、サーフェスの左上隅を基準とします。このパラメーターが NULL の場合は、サーフェス全体がスクロールされます。 |
| clipRect | RECT* | inoptional | clipRect はスクロールの移動先(オフセット適用後の scrollRect)をクリップします。スクロール完了後にクリップ矩形の内側に残るビットマップコンテンツのみがスクロールされます。 |
| offsetX | INT | in | 水平方向のスクロール量(ピクセル単位)です。正の値で右へ、負の値で左へスクロールします。 |
| offsetY | INT | in | 垂直方向のスクロール量(ピクセル単位)です。正の値で下へ、負の値で上へスクロールします。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
サーフェスオブジェクトへの描画を再開します。
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
サーフェスオブジェクトへの描画を一時停止します。
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ICompositionDrawingSurfaceInterop "{FD04E6E3-FE0C-4C3C-AB19-A07601A576EE}" #usecom global ICompositionDrawingSurfaceInterop IID_ICompositionDrawingSurfaceInterop "{}" #comfunc global ICompositionDrawingSurfaceInterop_BeginDraw 3 var,var,sptr,var #comfunc global ICompositionDrawingSurfaceInterop_EndDraw 4 #comfunc global ICompositionDrawingSurfaceInterop_Resize 5 int #comfunc global ICompositionDrawingSurfaceInterop_Scroll 6 var,var,int,int #comfunc global ICompositionDrawingSurfaceInterop_ResumeDraw 7 #comfunc global ICompositionDrawingSurfaceInterop_SuspendDraw 8 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ICompositionDrawingSurfaceInterop "{FD04E6E3-FE0C-4C3C-AB19-A07601A576EE}" #usecom global ICompositionDrawingSurfaceInterop IID_ICompositionDrawingSurfaceInterop "{}" #comfunc global ICompositionDrawingSurfaceInterop_BeginDraw 3 sptr,sptr,sptr,sptr #comfunc global ICompositionDrawingSurfaceInterop_EndDraw 4 #comfunc global ICompositionDrawingSurfaceInterop_Resize 5 int #comfunc global ICompositionDrawingSurfaceInterop_Scroll 6 sptr,sptr,int,int #comfunc global ICompositionDrawingSurfaceInterop_ResumeDraw 7 #comfunc global ICompositionDrawingSurfaceInterop_SuspendDraw 8 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。