ITransformProvider
COM公式ドキュメント
2次元空間内で移動、サイズ変更、回転が可能なコントロールへのアクセスを提供します。
解説(Remarks)
Transform コントロールパターンをサポートする必要がある Microsoft UI Automation プロバイダーに実装されます。
このコントロールパターンのサポートは、デスクトップ上のオブジェクトに限定されません。 コンテナーオブジェクトの子要素であっても、コンテナーの境界内で自由に移動、サイズ変更、または回転できる場合は、このコントロールパターンを実装する必要があります。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
コントロールを移動します。
| x | DOUBLE | in | コントロールの左端の絶対スクリーン座標。 |
| y | DOUBLE | in | コントロールの上端の絶対スクリーン座標。 |
戻り値
解説(Remarks)
オブジェクトは、その結果として得られるスクリーン上の位置がコンテナーの座標範囲から完全に外れ、キーボードやマウスでアクセスできなくなるような移動、サイズ変更、または回転はできません。たとえば、トップレベルウィンドウが画面外へ完全に移動される場合や、子オブジェクトがコンテナーのビューポートの境界外へ移動される場合です。このような場合、オブジェクトは要求されたスクリーン座標にできるだけ近い位置に配置され、上端または左端の座標はコンテナーの境界内に収まるように上書きされます。
コントロールのサイズを変更します。
| width | DOUBLE | in | ウィンドウの新しい幅(ピクセル単位)。 |
| height | DOUBLE | in | ウィンドウの新しい高さ(ピクセル単位)。 |
戻り値
解説(Remarks)
分割ペインをサポートするコントロールに対して呼び出された場合、このメソッドは隣接する他のペインのサイズを変更する副作用を持つことがあります。
オブジェクトは、その結果として得られるスクリーン上の位置がコンテナーの座標範囲から完全に外れ、キーボードやマウスでアクセスできなくなるような移動、サイズ変更、または回転はできません。たとえば、トップレベルウィンドウが画面外へ完全に移動される場合や、子オブジェクトがコンテナーのビューポートの境界外へ移動される場合です。このような場合、オブジェクトは要求されたスクリーン座標にできるだけ近い位置に配置され、上端または左端の座標はコンテナーの境界内に収まるように上書きされます。
コントロールを回転します。
| degrees | DOUBLE | in | コントロールを回転させる角度(度単位)。 正の数は時計回りに、負の数は反時計回りに回転させます。 |
戻り値
解説(Remarks)
オブジェクトは、その結果として得られるスクリーン上の位置がコンテナーの座標範囲から完全に外れ、キーボードやマウスでアクセスできなくなるような移動、サイズ変更、または回転はできません。たとえば、トップレベルウィンドウが画面外へ完全に移動される場合や、子オブジェクトがコンテナーのビューポートの境界外へ移動される場合です。このような場合、オブジェクトは要求されたスクリーン座標にできるだけ近い位置に配置され、上端または左端の座標はコンテナーの境界内に収まるように上書きされます。
コントロールを移動できるかどうかを示します。
| pRetVal | BOOL* | out | 要素を移動できるかどうかを受け取る BOOL へのポインタである。 |
コントロールのサイズを変更できるかどうかを示します。
| pRetVal | BOOL* | out | 要素のサイズを変更できるかどうかを受け取る BOOL へのポインタである。 |
コントロールを回転できるかどうかを示します。
| pRetVal | BOOL* | out | 要素を回転できるかどうかを受け取る BOOL へのポインタである。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITransformProvider "{6829DDC4-4F91-4FFA-B86F-BD3E2987CB4C}" #usecom global ITransformProvider IID_ITransformProvider "{}" #comfunc global ITransformProvider_Move 3 double,double #comfunc global ITransformProvider_Resize 4 double,double #comfunc global ITransformProvider_Rotate 5 double #comfunc global ITransformProvider_get_CanMove 6 var #comfunc global ITransformProvider_get_CanResize 7 var #comfunc global ITransformProvider_get_CanRotate 8 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_ITransformProvider "{6829DDC4-4F91-4FFA-B86F-BD3E2987CB4C}" #usecom global ITransformProvider IID_ITransformProvider "{}" #comfunc global ITransformProvider_Move 3 double,double #comfunc global ITransformProvider_Resize 4 double,double #comfunc global ITransformProvider_Rotate 5 double #comfunc global ITransformProvider_get_CanMove 6 sptr #comfunc global ITransformProvider_get_CanResize 7 sptr #comfunc global ITransformProvider_get_CanRotate 8 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。