IDirectManipulationViewport
COM公式ドキュメント
ユーザー操作からの入力を受け取って処理できる、ウィンドウ内の領域(ビューポートと呼ばれます)を定義します。
メソッド 28
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ビューポートによる入力処理を開始または再開します。
戻り値
メソッドが成功した場合は S_OK を返します。実行すべき処理がない場合(たとえばビューポートがすでに有効になっている場合)は S_FALSE を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、入力への応答を試みるようビューポートに指示します。
AUTODISABLE オプションが設定されている場合は、このメソッドを呼び出します。
例
次の例は、このメソッドの使用方法を示しています。
HRESULT hr = pViewport->Enable();
ビューポートによる入力処理を停止します。
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
ビューポートが無効になると、すべての変換が直ちに停止し、コンテンツが最終位置へ移動します。
複数の属性をアトミックに変更したい場合は、このメソッドを呼び出します。このメソッドはいつでも呼び出すことができます。
ビューポートは、Enable が呼び出されるまで入力処理を再開しません。
例
次の例は、このメソッドの使用方法を示しています。
HRESULT hr = pViewport->Disable();
接触点(コンタクト)とビューポートの間の関連付けを指定します。
| pointerId | DWORD | in | ポインターの ID です。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
WM_POINTERDOWN メッセージを受け取ったときに、このメソッドを呼び出します。WM_POINTERDOWN を受け取ると、アプリケーションは入力の座標を使ってヒットテストを行い、その接触点を関連付けるビューポートを判定できます。
SetContact の前に DeferContact を呼び出しておく必要があります。
初期化後、Direct Manipulation はビューポートの Z オーダーや、ビューポート間の親子関係を認識しません。SetContact の呼び出し順序がビューポートツリーを定義します。正しいビューポート階層を確立するには、最も子側のビューポートから SetContact を呼び出し、続いて親、祖父母、というように呼び出していく必要があります。
ポインターメッセージからポインター識別子を取得するには、GET_POINTERID_WPARAM を使用します。WM_POINTERUP を受け取ると、接触点は自動的に削除されます。
SetContact メソッドを使って接触点が 1 つ以上のビューポートに関連付けられている場合、Direct Manipulation はその接触点からの以降の入力を調べ、関連付けられたビューポートの構成に基づいて適切なマニピュレーションの特定を試みます。マニピュレーションが認識されると、アプリケーションはこの接触点に対して WM_POINTERCAPTURECHANGED メッセージを受け取ります。この文脈では、WM_POINTERCAPTURECHANGED メッセージは、Direct Manipulation が接触点をキャプチャしたこと、およびアプリケーションがこのマニピュレーションで消費されたこの接触点からの入力を受け取らないことを示します。
ビューポートに関連付けられた接触点を削除します。
| pointerId | DWORD | in | ポインターの ID です。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、特定の Direct Manipulation ビューポートから接触点を解放します(ユーザーがタッチ点を離すのと同等です)。
ビューポートに残っている最後の接触点が削除された場合を除き、ビューポートの状態は影響を受けません。最後の接触点が削除された場合は、サポートされていればビューポートは慣性(inertia)へ遷移します。
ビューポートに関連付けられたすべての接触点を削除します。ビューポートが慣性をサポートしている場合は慣性が開始されます。
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
これは、ビューポートに関連付けられたすべての接触点に対して ReleaseContact を呼び出すのと同等です。結果は、ユーザーがビューポートからすべてのタッチ点を離すのと同等です。
サポートされている場合は、このメソッドの呼び出し後に慣性が開始されます。
ビューポートの状態を取得します。
| status | DIRECTMANIPULATION_STATUS* | out | DIRECTMANIPULATION_STATUS の値のいずれかです。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、戻り値が読み取られる時点ではなく、呼び出し時点のビューポート状態を返します。
このメソッドは、Abandon の後に呼び出された場合は失敗します。
例
次の例は、このメソッドの使用方法を示しています。
DIRECTMANIPULATION_STATUS status;
HRESULT hr = pViewport->GetStatus(&status);
ビューポートのタグ値を取得します。
| riid | GUID* | in | インターフェイスへの IID です。 |
| object | void** | outoptional | タグのオブジェクト部分です。 |
| id | DWORD* | outoptional | タグの識別子部分です。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
タグは、整数 ID と Component Object Model (COM) オブジェクトの組み合わせです。アプリケーションがビューポートを識別するために使用できます。
出力パラメーターは省略可能であるため、このメソッドは ID、ビューポートオブジェクト、またはその両方を返すことができます。
例
次の例は、このメソッドの使用方法を示しています。
IUnknown* pUnk;
UINT32 id;
HRESULT hr = pRegion->GetTag(IID_PPV_ARGS(&pUnk), &id);
ビューポートのタグを設定します。
| object | IUnknown* | inoptional | タグのオブジェクト部分です。 |
| id | DWORD | in | タグの ID 部分です。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
タグは、整数 ID と Component Object Model (COM) オブジェクトの組み合わせです。アプリケーションがビューポートを識別するために使用できます。
object パラメーターは省略可能であるため、このメソッドは ID のみを設定することもできます。
例
次の例は、このメソッドの構文を示しています。
IUnknown* pUnk = ...;
UINT32 id = ...;
HRESULT hr = pRegion->SetTag(pUnk, id);
SetViewportRect で指定されたビューポート座標系の原点を基準とした、ビューポートの矩形を取得します。
| viewport | RECT* | out | ビューポート座標系を基準とした境界矩形です。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ビューポート座標系の原点を基準として、ビューポートの境界矩形を設定します。
| viewport | RECT* | in | 境界矩形です。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
ビューポート矩形は、ユーザーに表示されるコンテンツの領域を指定します。プライマリコンテンツ矩形と組み合わせて、ビューポート矩形はチェーン(連鎖)動作の決定に使用されます。
ビューポートをプライマリコンテンツの特定の領域へ移動し、遷移をアニメーションするかどうかを指定します。
| left | FLOAT | in | プライマリコンテンツ座標空間における矩形の左端の座標です。 |
| top | FLOAT | in | プライマリコンテンツ座標空間における矩形の上端の座標です。 |
| right | FLOAT | in | プライマリコンテンツ座標空間における矩形の右端の座標です。 |
| bottom | FLOAT | in | プライマリコンテンツ座標空間における矩形の下端の座標です。 |
| animate | BOOL | in | ズーム動作をアニメーションするかどうかを指定します。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ビューポート座標系からウィンドウのクライアント座標系への変換を指定します。
| matrix | FLOAT* | in | 変換行列で、行優先順の _11, _12, _21, _22, _31, _32 です。 |
| pointCount | DWORD | in | 変換行列のサイズです。すべての Direct Manipulation の変換には 3x2 行列が使用されるため、この値は常に 6 です。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
画面上でのビューポートの位置、スケーリング、向きを指定するには、この関数を呼び出します。ビューポートの位置、スケーリング、向き、サイズは、ビューポート変換とビューポート矩形によって一意に決まります。アプリケーションはこのメソッドを使ってビューポート変換を指定し、SetViewportRect を使ってビューポート矩形を指定できます。
ビューポート矩形(コンテンツ内でユーザーに表示される矩形領域)は、ビューポート座標で指定されます。ビューポート矩形の左上点が (0,0) の場合、ビューポート矩形はビューポート座標系の原点にちょうど配置されます。ビューポート座標系の原点からオフセットされたビューポートは、次の 2 つの方法で指定できます。
- ビューポート矩形の左上点によって指定する
- ビューポート変換の平行移動成分 (_31, _32) によって指定する
- ビューポート矩形のオフセット
- ビューポート変換(ビューポートからクライアント座標系へ)
- クライアントから画面へのマッピング(クライアントから画面座標系へ)
ビューポートのディスプレイ変換を指定し、出力変換をディスプレイ変換の新しい値に同期します。
| matrix | FLOAT* | in | 変換行列で、行優先順の _11, _12, _21, _22, _31, _32 です。 |
| pointCount | DWORD | in | 変換行列のサイズです。すべての Direct Manipulation の変換には 3x2 行列が使用されるため、この値は常に 6 です。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
アプリケーションがコンポジターの外部でコンテンツの特別な出力処理(ビューポート変換に完全には取り込まれない処理)を行う場合は、その特別な処理のためにディスプレイ変換を指定するためにこのメソッドを呼び出します。
ディスプレイ変換は、マニピュレーションの更新が出力変換にどのように適用されるかに影響します。たとえば、ディスプレイ変換が 3 倍のスケールに設定されている場合、パンを行うとコンテンツは元の距離の 3 倍だけ移動します。
このメソッドでディスプレイ変換を変更すると、出力変換はディスプレイ変換の新しい値に同期されます。
ビューポートの状態が DIRECTMANIPULATION_RUNNING または DIRECTMANIPULATION_INERTIA の場合、このメソッドは呼び出せません。
IDirectManipulationContent と IDirectManipulationPrimaryContent を実装するビューポートのプライマリコンテンツを取得します。
| riid | GUID* | in | インターフェイスへの IID です。 |
| object | void** | out | プライマリコンテンツオブジェクトです。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、IDirectManipulationContent と IDirectManipulationPrimaryContent を実装するビューポートのコンテンツを取得します。
例
次の例は、このメソッドの使用方法を示しています。
IDirectManipulationPrimaryContent *pContent;
HRESULT hr = pRegion->GetPrimaryContent(IID_PPV_ARGS(&pContent));
パンインジケーターなどのセカンダリコンテンツをビューポートに追加します。
| content | IDirectManipulationContent* | in | ビューポートに追加するコンテンツです。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
セカンダリコンテンツは CreateContent を呼び出して作成します。追加されると、セカンダリコンテンツはマニピュレーションに応じてプライマリコンテンツを基準に移動します。その動きは、セカンダリコンテンツの種類ごとに関連付けられたルールによって決まります。
ビューポートからセカンダリコンテンツを削除します。
| content | IDirectManipulationContent* | in | 削除するコンテンツオブジェクトです。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
セカンダリコンテンツは、いつでもビューポートから削除できます。
ビューポートが入力と出力をどのように扱うかを設定します。
| options | DIRECTMANIPULATION_VIEWPORT_OPTIONS | in | DIRECTMANIPULATION_VIEWPORT_OPTIONS の値の 1 つ以上です。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
DIRECTMANIPULATION_INPUT_MODE_MANUAL を設定してこのメソッドを呼び出すことは、SetViewportOptions(DIRECTMANIPULATION_VIEWPORT_OPTIONS_INPUT) を呼び出すことと同様です。
ビューポートにインタラクション構成を追加します。
| configuration | DIRECTMANIPULATION_CONFIGURATION | in | ビューポートのインタラクション構成を指定する DIRECTMANIPULATION_CONFIGURATION の値のいずれかです。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
インタラクション構成は、マニピュレーションエンジンが入力にどのように応答するか、およびどのマニピュレーションがサポートされるかを指定します。入力処理の前に、AddConfiguration を使って任意の数の構成をビューポートに追加できます。
構成は、ActivateConfiguration を使って実行時にアプリケーションが切り替えることができます。
構成が不要になった場合(かつ現在アクティブでない場合)は、RemoveConfiguration を使って削除できます。
構成が AddConfiguration で追加されていない場合でも、ActivateConfiguration を呼び出すことで自動的に追加されてアクティブ化されます。
このメソッドの呼び出しに成功した後は、ドラッグ アンド ドロップ動作オブジェクトをアタッチできません。
既存のドラッグ アンド ドロップ動作がすでに追加されている場合、別のドラッグ アンド ドロップ動作を追加することはできません。
このメソッドは、マニピュレーションの実行中は構成を変更できないため、あらかじめ追加しておいた構成をアプリケーションが切り替えられるように設計されています。ほとんどの場合、構成の更新には ActivateConfiguration を使う方が適切です。
ビューポートのインタラクション構成を削除します。
| configuration | DIRECTMANIPULATION_CONFIGURATION | in | ビューポートのインタラクション構成を指定する DIRECTMANIPULATION_CONFIGURATION の値のいずれかです。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、AddConfiguration を使って追加された構成を削除します。このメソッドは、その構成がアクティブでない場合にのみ呼び出せます。
インタラクション構成は、マニピュレーションエンジンが入力にどのように応答するか、およびどのジェスチャがサポートされるかを指定します。AddConfiguration を使って任意の数の構成をビューポートに追加できます。構成は、ActivateConfiguration を使って実行時にアプリケーションが切り替えることができます。構成が不要になった場合(かつ現在アクティブでない場合)は、RemoveConfiguration を使って削除できます。
例
次の例は、このメソッドの使用方法を示しています。
HRESULT hr = pRegion->RemoveConfiguration(
DIRECTMANIPULATION_CONFIGURATION_INTERACTION |
DIRECTMANIPULATION_CONFIGURATION_TRANSLATION_X);
入力インタラクションの構成を設定します。
| configuration | DIRECTMANIPULATION_CONFIGURATION | in | ビューポートのインタラクション構成を指定する DIRECTMANIPULATION_CONFIGURATION の値の 1 つ以上です。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
インタラクション構成は、マニピュレーションエンジンが入力にどのように応答するか、およびどのマニピュレーションがサポートされるかを指定します。入力処理の前に、AddConfiguration を使って任意の数の構成をビューポートに追加できます。
構成は、ActivateConfiguration を使って実行時にアプリケーションが切り替えることができます。
構成が不要になった場合(かつ現在アクティブでない場合)は、RemoveConfiguration を使って削除できます。
構成が AddConfiguration で追加されていない場合でも、ActivateConfiguration を呼び出すことで自動的に追加されてアクティブ化されます。
このメソッドの呼び出しに成功した後は、ドラッグ アンド ドロップ動作オブジェクトをアタッチできません。
例
次の例は、ビューポートを水平方向のパン用に構成する方法を示しています。
HRESULT hr = pViewport>ActivateConfiguration(
DIRECTMANIPULATION_CONFIGURATION_INTERACTION |
DIRECTMANIPULATION_CONFIGURATION_TRANSLATION_X);
Direct Manipulation が無視するジェスチャを設定します。
| configuration | DIRECTMANIPULATION_GESTURE_CONFIGURATION | in | DIRECTMANIPULATION_GESTURE_CONFIGURATION の値のいずれかです。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
アプリケーションが UI スレッド上で処理するジェスチャを指定するには、このメソッドを使用します。ジェスチャが認識されると、それは処理のためにアプリケーションへ渡され、Direct Manipulation からは無視されます。
例
次の例は、ズームジェスチャを Direct Manipulation が無視し、カスタムのズーム動作を実装している可能性があるアプリケーションが処理するようにする方法を示しています。
HRESULT hr = pViewport->SetManualGesture(DIRECTMANIPULATION_GESTURE_PINCH_ZOOM);
親ビューポートにチェーン(連鎖)できる、ビューポートでサポートされる動作(モーション)の種類を指定します。
| enabledTypes | DIRECTMANIPULATION_MOTION_TYPES | in | このビューポートで有効にする動作の種類を指定する DIRECTMANIPULATION_MOTION_TYPES の値のいずれかです。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ビューポートイベントをリッスンする新しいイベントハンドラーを追加します。
| window | HWND | inoptional | イベントコールバック用の、スレッドが所有するウィンドウのハンドルです。 |
| eventHandler | IDirectManipulationViewportEventHandler* | in | ビューポートの状態イベントおよび更新イベントが発生したときに呼び出されるハンドラーです。指定するオブジェクトは IDirectManipulationViewportEventHandler インターフェイスを実装している必要があります。 |
| cookie | DWORD* | out | このイベントハンドラーのコールバックを表すハンドルです。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
イベントコールバックは、指定したウィンドウを所有するスレッドから発行されます。同じコールバックメソッドの連続したイベントは、まとめられる(coalesce される)場合があります。
既存のイベントハンドラーをビューポートから削除します。
| cookie | DWORD | in | 以前の AddEventHandler の呼び出しで返された値です。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
入力が UI スレッドから見えるかどうかを指定します。
| mode | DIRECTMANIPULATION_INPUT_MODE | in | DIRECTMANIPULATION_INPUT_MODE の値のいずれかです。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
DIRECTMANIPULATION_INPUT_MODE_AUTOMATIC は Direct Manipulation の既定のモードです。
Direct Manipulation はマニピュレーションを駆動するすべての入力を消費し、アプリケーションは WM_POINTERCAPTURECHANGED メッセージを受け取ります。
状況によっては、アプリケーションがマニピュレーションを駆動している入力を受け取りたい場合があります。その場合は DIRECTMANIPULATION_INPUT_MODE_MANUAL を設定します。アプリケーションは、Direct Manipulation がマニピュレーションを駆動するために使用する入力も含め、すべての入力メッセージを受け取ります。
例
次の例は、このメソッドの使用方法を示しています。
HRESULT hr = pViewport->SetInputMode(DIRECTMANIPULATION_INPUT_MODE_AUTOMATIC);
ビューポートが入力イベント中ではなく手動でコンテンツを更新するかどうかを指定します。
| mode | DIRECTMANIPULATION_INPUT_MODE | in | DIRECTMANIPULATION_INPUT_MODE の値のいずれかです。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
DIRECTMANIPULATION_INPUT_MODE_AUTOMATIC は Direct Manipulation の既定のモードです。このモードでは、視覚的な更新が入力に駆動されてコンポジターへプッシュされます。これは、アプリケーションがシステム提供の IDirectManipulationCompositor の実装を使用している場合に想定される動作モードです。
アプリケーションが独自の IDirectManipulationCompositor の実装を提供する場合は、DIRECTMANIPULATION_INPUT_MODE_MANUAL を設定してビューポートの更新モードを手動に切り替える必要があります。手動モードの場合、コンポジターは Direct Manipulation に対して Update を呼び出すたびに視覚的な更新をプルします。
DIRECTMANIPULATION_INPUT_MODE_MANUAL を設定してこのメソッドを呼び出すことは、SetViewportOptions(DIRECTMANIPULATION_VIEWPORT_OPTIONS_INPUT) を呼び出すことと同様です。ただし、SetViewportOptions を呼び出すと、他のすべての設定も上書きされます。
マニピュレーションを停止し、ビューポートを準備完了(ready)状態に戻します。
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
必須のスナップポイントが構成されている場合、コンテンツは最も近いスナップポイントへアニメーションで移動することがあります。
ビューポートが使用するすべてのリソースを解放し、メモリからの破棄に備えます。
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Abandon を呼び出した後は、そのビューポートに対して以降の関数呼び出しを行わないでください。Abandon の後に関数が呼び出された場合、E_INVALID_STATE が返されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDirectManipulationViewport "{28B85A3D-60A0-48BD-9BA1-5CE8D9EA3A6D}" #usecom global IDirectManipulationViewport IID_IDirectManipulationViewport "{34E211B6-3650-4F75-8334-FA359598E1C5}" #comfunc global IDirectManipulationViewport_Enable 3 #comfunc global IDirectManipulationViewport_Disable 4 #comfunc global IDirectManipulationViewport_SetContact 5 int #comfunc global IDirectManipulationViewport_ReleaseContact 6 int #comfunc global IDirectManipulationViewport_ReleaseAllContacts 7 #comfunc global IDirectManipulationViewport_GetStatus 8 var #comfunc global IDirectManipulationViewport_GetTag 9 var,sptr,var #comfunc global IDirectManipulationViewport_SetTag 10 sptr,int #comfunc global IDirectManipulationViewport_GetViewportRect 11 var #comfunc global IDirectManipulationViewport_SetViewportRect 12 var #comfunc global IDirectManipulationViewport_ZoomToRect 13 float,float,float,float,int #comfunc global IDirectManipulationViewport_SetViewportTransform 14 var,int #comfunc global IDirectManipulationViewport_SyncDisplayTransform 15 var,int #comfunc global IDirectManipulationViewport_GetPrimaryContent 16 var,sptr #comfunc global IDirectManipulationViewport_AddContent 17 sptr #comfunc global IDirectManipulationViewport_RemoveContent 18 sptr #comfunc global IDirectManipulationViewport_SetViewportOptions 19 int #comfunc global IDirectManipulationViewport_AddConfiguration 20 int #comfunc global IDirectManipulationViewport_RemoveConfiguration 21 int #comfunc global IDirectManipulationViewport_ActivateConfiguration 22 int #comfunc global IDirectManipulationViewport_SetManualGesture 23 int #comfunc global IDirectManipulationViewport_SetChaining 24 int #comfunc global IDirectManipulationViewport_AddEventHandler 25 sptr,sptr,var #comfunc global IDirectManipulationViewport_RemoveEventHandler 26 int #comfunc global IDirectManipulationViewport_SetInputMode 27 int #comfunc global IDirectManipulationViewport_SetUpdateMode 28 int #comfunc global IDirectManipulationViewport_Stop 29 #comfunc global IDirectManipulationViewport_Abandon 30 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDirectManipulationViewport "{28B85A3D-60A0-48BD-9BA1-5CE8D9EA3A6D}" #usecom global IDirectManipulationViewport IID_IDirectManipulationViewport "{34E211B6-3650-4F75-8334-FA359598E1C5}" #comfunc global IDirectManipulationViewport_Enable 3 #comfunc global IDirectManipulationViewport_Disable 4 #comfunc global IDirectManipulationViewport_SetContact 5 int #comfunc global IDirectManipulationViewport_ReleaseContact 6 int #comfunc global IDirectManipulationViewport_ReleaseAllContacts 7 #comfunc global IDirectManipulationViewport_GetStatus 8 sptr #comfunc global IDirectManipulationViewport_GetTag 9 sptr,sptr,sptr #comfunc global IDirectManipulationViewport_SetTag 10 sptr,int #comfunc global IDirectManipulationViewport_GetViewportRect 11 sptr #comfunc global IDirectManipulationViewport_SetViewportRect 12 sptr #comfunc global IDirectManipulationViewport_ZoomToRect 13 float,float,float,float,int #comfunc global IDirectManipulationViewport_SetViewportTransform 14 sptr,int #comfunc global IDirectManipulationViewport_SyncDisplayTransform 15 sptr,int #comfunc global IDirectManipulationViewport_GetPrimaryContent 16 sptr,sptr #comfunc global IDirectManipulationViewport_AddContent 17 sptr #comfunc global IDirectManipulationViewport_RemoveContent 18 sptr #comfunc global IDirectManipulationViewport_SetViewportOptions 19 int #comfunc global IDirectManipulationViewport_AddConfiguration 20 int #comfunc global IDirectManipulationViewport_RemoveConfiguration 21 int #comfunc global IDirectManipulationViewport_ActivateConfiguration 22 int #comfunc global IDirectManipulationViewport_SetManualGesture 23 int #comfunc global IDirectManipulationViewport_SetChaining 24 int #comfunc global IDirectManipulationViewport_AddEventHandler 25 sptr,sptr,sptr #comfunc global IDirectManipulationViewport_RemoveEventHandler 26 int #comfunc global IDirectManipulationViewport_SetInputMode 27 int #comfunc global IDirectManipulationViewport_SetUpdateMode 28 int #comfunc global IDirectManipulationViewport_Stop 29 #comfunc global IDirectManipulationViewport_Abandon 30 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。