Win32 API 日本語リファレンス
ホームGraphics.DirectManipulation › IDirectManipulationViewport

IDirectManipulationViewport

COM
IID28b85a3d-60a0-48bd-9ba1-5ce8d9ea3a6d継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ユーザー操作からの入力を受け取って処理できる、ウィンドウ内の領域(ビューポートと呼ばれます)を定義します。

メソッド 28

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

vtbl 3 HRESULT Enable()

ビューポートによる入力処理を開始または再開します。

戻り値

メソッドが成功した場合は S_OK を返します。実行すべき処理がない場合(たとえばビューポートがすでに有効になっている場合)は S_FALSE を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、入力への応答を試みるようビューポートに指示します。

AUTODISABLE オプションが設定されている場合は、このメソッドを呼び出します。

次の例は、このメソッドの使用方法を示しています。

HRESULT hr = pViewport->Enable();
vtbl 4 HRESULT Disable()

ビューポートによる入力処理を停止します。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

ビューポートが無効になると、すべての変換が直ちに停止し、コンテンツが最終位置へ移動します。

複数の属性をアトミックに変更したい場合は、このメソッドを呼び出します。このメソッドはいつでも呼び出すことができます。

ビューポートは、Enable が呼び出されるまで入力処理を再開しません。

次の例は、このメソッドの使用方法を示しています。

HRESULT hr = pViewport->Disable();
vtbl 5 HRESULT SetContact(DWORD pointerId)

接触点(コンタクト)とビューポートの間の関連付けを指定します。

pointerIdDWORDinポインターの 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 が接触点をキャプチャしたこと、およびアプリケーションがこのマニピュレーションで消費されたこの接触点からの入力を受け取らないことを示します。

vtbl 6 HRESULT ReleaseContact(DWORD pointerId)

ビューポートに関連付けられた接触点を削除します。

pointerIdDWORDinポインターの ID です。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、特定の Direct Manipulation ビューポートから接触点を解放します(ユーザーがタッチ点を離すのと同等です)。

ビューポートに残っている最後の接触点が削除された場合を除き、ビューポートの状態は影響を受けません。最後の接触点が削除された場合は、サポートされていればビューポートは慣性(inertia)へ遷移します。

vtbl 7 HRESULT ReleaseAllContacts()

ビューポートに関連付けられたすべての接触点を削除します。ビューポートが慣性をサポートしている場合は慣性が開始されます。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

これは、ビューポートに関連付けられたすべての接触点に対して ReleaseContact を呼び出すのと同等です。結果は、ユーザーがビューポートからすべてのタッチ点を離すのと同等です。

サポートされている場合は、このメソッドの呼び出し後に慣性が開始されます。

vtbl 8 HRESULT GetStatus(DIRECTMANIPULATION_STATUS* status)

ビューポートの状態を取得します。

statusDIRECTMANIPULATION_STATUS*outDIRECTMANIPULATION_STATUS の値のいずれかです。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、戻り値が読み取られる時点ではなく、呼び出し時点のビューポート状態を返します。

このメソッドは、Abandon の後に呼び出された場合は失敗します。

次の例は、このメソッドの使用方法を示しています。

DIRECTMANIPULATION_STATUS status;

HRESULT hr = pViewport->GetStatus(&status);
vtbl 9 HRESULT GetTag(GUID* riid, void** object, DWORD* id)

ビューポートのタグ値を取得します。

riidGUID*inインターフェイスへの IID です。
objectvoid**outoptionalタグのオブジェクト部分です。
idDWORD*outoptionalタグの識別子部分です。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

タグは、整数 ID と Component Object Model (COM) オブジェクトの組み合わせです。アプリケーションがビューポートを識別するために使用できます。

出力パラメーターは省略可能であるため、このメソッドは ID、ビューポートオブジェクト、またはその両方を返すことができます。

次の例は、このメソッドの使用方法を示しています。

IUnknown* pUnk;
UINT32 id;

HRESULT hr = pRegion->GetTag(IID_PPV_ARGS(&pUnk), &id); 

vtbl 10 HRESULT SetTag(IUnknown* object, DWORD id)

ビューポートのタグを設定します。

objectIUnknown*inoptionalタグのオブジェクト部分です。
idDWORDinタグの ID 部分です。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

タグは、整数 ID と Component Object Model (COM) オブジェクトの組み合わせです。アプリケーションがビューポートを識別するために使用できます。

object パラメーターは省略可能であるため、このメソッドは ID のみを設定することもできます。

次の例は、このメソッドの構文を示しています。

IUnknown* pUnk = ...;
UINT32 id = ...;

HRESULT hr = pRegion->SetTag(pUnk, id);
vtbl 11 HRESULT GetViewportRect(RECT* viewport)

SetViewportRect で指定されたビューポート座標系の原点を基準とした、ビューポートの矩形を取得します。

viewportRECT*outビューポート座標系を基準とした境界矩形です。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 12 HRESULT SetViewportRect(RECT* viewport)

ビューポート座標系の原点を基準として、ビューポートの境界矩形を設定します。

viewportRECT*in境界矩形です。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

ビューポート矩形は、ユーザーに表示されるコンテンツの領域を指定します。プライマリコンテンツ矩形と組み合わせて、ビューポート矩形はチェーン(連鎖)動作の決定に使用されます。

vtbl 13 HRESULT ZoomToRect(FLOAT left, FLOAT top, FLOAT right, FLOAT bottom, BOOL animate)

ビューポートをプライマリコンテンツの特定の領域へ移動し、遷移をアニメーションするかどうかを指定します。

leftFLOATinプライマリコンテンツ座標空間における矩形の左端の座標です。
topFLOATinプライマリコンテンツ座標空間における矩形の上端の座標です。
rightFLOATinプライマリコンテンツ座標空間における矩形の右端の座標です。
bottomFLOATinプライマリコンテンツ座標空間における矩形の下端の座標です。
animateBOOLinズーム動作をアニメーションするかどうかを指定します。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 14 HRESULT SetViewportTransform(FLOAT* matrix, DWORD pointCount)

ビューポート座標系からウィンドウのクライアント座標系への変換を指定します。

matrixFLOAT*in変換行列で、行優先順の _11, _12, _21, _22, _31, _32 です。
pointCountDWORDin変換行列のサイズです。すべての Direct Manipulation の変換には 3x2 行列が使用されるため、この値は常に 6 です。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

画面上でのビューポートの位置、スケーリング、向きを指定するには、この関数を呼び出します。ビューポートの位置、スケーリング、向き、サイズは、ビューポート変換とビューポート矩形によって一意に決まります。アプリケーションはこのメソッドを使ってビューポート変換を指定し、SetViewportRect を使ってビューポート矩形を指定できます。

ビューポート矩形(コンテンツ内でユーザーに表示される矩形領域)は、ビューポート座標で指定されます。ビューポート矩形の左上点が (0,0) の場合、ビューポート矩形はビューポート座標系の原点にちょうど配置されます。ビューポート座標系の原点からオフセットされたビューポートは、次の 2 つの方法で指定できます。

ビューポート変換は、ビューポート座標系からウィンドウのクライアント座標系へ変換します。Direct Manipulation はウィンドウの RTL プロパティを無視するため、クライアント領域の原点は常に左上点です。 変換は次の順序で適用されます。
  1. ビューポート矩形のオフセット
  2. ビューポート変換(ビューポートからクライアント座標系へ)
  3. クライアントから画面へのマッピング(クライアントから画面座標系へ)
vtbl 15 HRESULT SyncDisplayTransform(FLOAT* matrix, DWORD pointCount)

ビューポートのディスプレイ変換を指定し、出力変換をディスプレイ変換の新しい値に同期します。

matrixFLOAT*in変換行列で、行優先順の _11, _12, _21, _22, _31, _32 です。
pointCountDWORDin変換行列のサイズです。すべての Direct Manipulation の変換には 3x2 行列が使用されるため、この値は常に 6 です。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

アプリケーションがコンポジターの外部でコンテンツの特別な出力処理(ビューポート変換に完全には取り込まれない処理)を行う場合は、その特別な処理のためにディスプレイ変換を指定するためにこのメソッドを呼び出します。

ディスプレイ変換は、マニピュレーションの更新が出力変換にどのように適用されるかに影響します。たとえば、ディスプレイ変換が 3 倍のスケールに設定されている場合、パンを行うとコンテンツは元の距離の 3 倍だけ移動します。

このメソッドでディスプレイ変換を変更すると、出力変換はディスプレイ変換の新しい値に同期されます。

ビューポートの状態が DIRECTMANIPULATION_RUNNING または DIRECTMANIPULATION_INERTIA の場合、このメソッドは呼び出せません。

vtbl 16 HRESULT GetPrimaryContent(GUID* riid, void** object)

IDirectManipulationContent と IDirectManipulationPrimaryContent を実装するビューポートのプライマリコンテンツを取得します。

riidGUID*inインターフェイスへの IID です。
objectvoid**outプライマリコンテンツオブジェクトです。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、IDirectManipulationContentIDirectManipulationPrimaryContent を実装するビューポートのコンテンツを取得します。

次の例は、このメソッドの使用方法を示しています。

IDirectManipulationPrimaryContent *pContent;

HRESULT hr = pRegion->GetPrimaryContent(IID_PPV_ARGS(&pContent));
vtbl 17 HRESULT AddContent(IDirectManipulationContent* content)

パンインジケーターなどのセカンダリコンテンツをビューポートに追加します。

contentIDirectManipulationContent*inビューポートに追加するコンテンツです。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

セカンダリコンテンツは CreateContent を呼び出して作成します。追加されると、セカンダリコンテンツはマニピュレーションに応じてプライマリコンテンツを基準に移動します。その動きは、セカンダリコンテンツの種類ごとに関連付けられたルールによって決まります。

vtbl 18 HRESULT RemoveContent(IDirectManipulationContent* content)

ビューポートからセカンダリコンテンツを削除します。

contentIDirectManipulationContent*in削除するコンテンツオブジェクトです。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

セカンダリコンテンツは、いつでもビューポートから削除できます。

vtbl 19 HRESULT SetViewportOptions(DIRECTMANIPULATION_VIEWPORT_OPTIONS options)

ビューポートが入力と出力をどのように扱うかを設定します。

optionsDIRECTMANIPULATION_VIEWPORT_OPTIONSinDIRECTMANIPULATION_VIEWPORT_OPTIONS の値の 1 つ以上です。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

DIRECTMANIPULATION_INPUT_MODE_MANUAL を設定してこのメソッドを呼び出すことは、SetViewportOptions(DIRECTMANIPULATION_VIEWPORT_OPTIONS_INPUT) を呼び出すことと同様です。

vtbl 20 HRESULT AddConfiguration(DIRECTMANIPULATION_CONFIGURATION configuration)

ビューポートにインタラクション構成を追加します。

configurationDIRECTMANIPULATION_CONFIGURATIONinビューポートのインタラクション構成を指定する DIRECTMANIPULATION_CONFIGURATION の値のいずれかです。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

インタラクション構成は、マニピュレーションエンジンが入力にどのように応答するか、およびどのマニピュレーションがサポートされるかを指定します。入力処理の前に、AddConfiguration を使って任意の数の構成をビューポートに追加できます。

構成は、ActivateConfiguration を使って実行時にアプリケーションが切り替えることができます。

構成が不要になった場合(かつ現在アクティブでない場合)は、RemoveConfiguration を使って削除できます。

構成が AddConfiguration で追加されていない場合でも、ActivateConfiguration を呼び出すことで自動的に追加されてアクティブ化されます。

注意 入力処理が行われている場合、この呼び出しは失敗します。
ドラッグ アンド ドロップ動作が指定されている場合、このメソッドは失敗します。

このメソッドの呼び出しに成功した後は、ドラッグ アンド ドロップ動作オブジェクトをアタッチできません。

既存のドラッグ アンド ドロップ動作がすでに追加されている場合、別のドラッグ アンド ドロップ動作を追加することはできません。

このメソッドは、マニピュレーションの実行中は構成を変更できないため、あらかじめ追加しておいた構成をアプリケーションが切り替えられるように設計されています。ほとんどの場合、構成の更新には ActivateConfiguration を使う方が適切です。

vtbl 21 HRESULT RemoveConfiguration(DIRECTMANIPULATION_CONFIGURATION configuration)

ビューポートのインタラクション構成を削除します。

configurationDIRECTMANIPULATION_CONFIGURATIONinビューポートのインタラクション構成を指定する DIRECTMANIPULATION_CONFIGURATION の値のいずれかです。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、AddConfiguration を使って追加された構成を削除します。このメソッドは、その構成がアクティブでない場合にのみ呼び出せます。

インタラクション構成は、マニピュレーションエンジンが入力にどのように応答するか、およびどのジェスチャがサポートされるかを指定します。AddConfiguration を使って任意の数の構成をビューポートに追加できます。構成は、ActivateConfiguration を使って実行時にアプリケーションが切り替えることができます。構成が不要になった場合(かつ現在アクティブでない場合)は、RemoveConfiguration を使って削除できます。

次の例は、このメソッドの使用方法を示しています。

HRESULT hr = pRegion->RemoveConfiguration(
    DIRECTMANIPULATION_CONFIGURATION_INTERACTION | 
    DIRECTMANIPULATION_CONFIGURATION_TRANSLATION_X);
vtbl 22 HRESULT ActivateConfiguration(DIRECTMANIPULATION_CONFIGURATION configuration)

入力インタラクションの構成を設定します。

configurationDIRECTMANIPULATION_CONFIGURATIONinビューポートのインタラクション構成を指定する DIRECTMANIPULATION_CONFIGURATION の値の 1 つ以上です。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

インタラクション構成は、マニピュレーションエンジンが入力にどのように応答するか、およびどのマニピュレーションがサポートされるかを指定します。入力処理の前に、AddConfiguration を使って任意の数の構成をビューポートに追加できます。

構成は、ActivateConfiguration を使って実行時にアプリケーションが切り替えることができます。

構成が不要になった場合(かつ現在アクティブでない場合)は、RemoveConfiguration を使って削除できます。

構成が AddConfiguration で追加されていない場合でも、ActivateConfiguration を呼び出すことで自動的に追加されてアクティブ化されます。

注意 入力処理が行われている場合、この呼び出しは失敗します。
ドラッグ アンド ドロップ動作が指定されている場合、このメソッドは失敗します。

このメソッドの呼び出しに成功した後は、ドラッグ アンド ドロップ動作オブジェクトをアタッチできません。

次の例は、ビューポートを水平方向のパン用に構成する方法を示しています。

HRESULT hr = pViewport>ActivateConfiguration(
    DIRECTMANIPULATION_CONFIGURATION_INTERACTION | 
    DIRECTMANIPULATION_CONFIGURATION_TRANSLATION_X);
vtbl 23 HRESULT SetManualGesture(DIRECTMANIPULATION_GESTURE_CONFIGURATION configuration)

Direct Manipulation が無視するジェスチャを設定します。

configurationDIRECTMANIPULATION_GESTURE_CONFIGURATIONinDIRECTMANIPULATION_GESTURE_CONFIGURATION の値のいずれかです。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

アプリケーションが UI スレッド上で処理するジェスチャを指定するには、このメソッドを使用します。ジェスチャが認識されると、それは処理のためにアプリケーションへ渡され、Direct Manipulation からは無視されます。

次の例は、ズームジェスチャを Direct Manipulation が無視し、カスタムのズーム動作を実装している可能性があるアプリケーションが処理するようにする方法を示しています。

HRESULT hr = pViewport->SetManualGesture(DIRECTMANIPULATION_GESTURE_PINCH_ZOOM);
vtbl 24 HRESULT SetChaining(DIRECTMANIPULATION_MOTION_TYPES enabledTypes)

親ビューポートにチェーン(連鎖)できる、ビューポートでサポートされる動作(モーション)の種類を指定します。

enabledTypesDIRECTMANIPULATION_MOTION_TYPESinこのビューポートで有効にする動作の種類を指定する DIRECTMANIPULATION_MOTION_TYPES の値のいずれかです。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 25 HRESULT AddEventHandler(HWND window, IDirectManipulationViewportEventHandler* eventHandler, DWORD* cookie)

ビューポートイベントをリッスンする新しいイベントハンドラーを追加します。

windowHWNDinoptionalイベントコールバック用の、スレッドが所有するウィンドウのハンドルです。
eventHandlerIDirectManipulationViewportEventHandler*inビューポートの状態イベントおよび更新イベントが発生したときに呼び出されるハンドラーです。指定するオブジェクトは IDirectManipulationViewportEventHandler インターフェイスを実装している必要があります。
cookieDWORD*outこのイベントハンドラーのコールバックを表すハンドルです。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

イベントコールバックは、指定したウィンドウを所有するスレッドから発行されます。同じコールバックメソッドの連続したイベントは、まとめられる(coalesce される)場合があります。

注意 ビューポートにドラッグ アンド ドロップ動作がアタッチされている場合、イベントハンドラーは IDirectManipulationDragDropEventHandler を実装する必要があります。
vtbl 26 HRESULT RemoveEventHandler(DWORD cookie)

既存のイベントハンドラーをビューポートから削除します。

cookieDWORDin以前の AddEventHandler の呼び出しで返された値です。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 27 HRESULT SetInputMode(DIRECTMANIPULATION_INPUT_MODE mode)

入力が UI スレッドから見えるかどうかを指定します。

modeDIRECTMANIPULATION_INPUT_MODEinDIRECTMANIPULATION_INPUT_MODE の値のいずれかです。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

DIRECTMANIPULATION_INPUT_MODE_AUTOMATICDirect Manipulation の既定のモードです。

Direct Manipulation はマニピュレーションを駆動するすべての入力を消費し、アプリケーションは WM_POINTERCAPTURECHANGED メッセージを受け取ります。

状況によっては、アプリケーションがマニピュレーションを駆動している入力を受け取りたい場合があります。その場合は DIRECTMANIPULATION_INPUT_MODE_MANUAL を設定します。アプリケーションは、Direct Manipulation がマニピュレーションを駆動するために使用する入力も含め、すべての入力メッセージを受け取ります。

注意 アプリケーションは WM_POINTERCAPTURECHANGED メッセージを受け取りません。
DIRECTMANIPULATION_INPUT_MODE_MANUAL を設定してこのメソッドを呼び出すことは、SetViewportOptions(DIRECTMANIPULATION_VIEWPORT_OPTIONS_INPUT) を呼び出すことと同様です。ただし、SetViewportOptions を呼び出すと、他のすべての設定も上書きされます。

次の例は、このメソッドの使用方法を示しています。

HRESULT hr = pViewport->SetInputMode(DIRECTMANIPULATION_INPUT_MODE_AUTOMATIC);
vtbl 28 HRESULT SetUpdateMode(DIRECTMANIPULATION_INPUT_MODE mode)

ビューポートが入力イベント中ではなく手動でコンテンツを更新するかどうかを指定します。

modeDIRECTMANIPULATION_INPUT_MODEinDIRECTMANIPULATION_INPUT_MODE の値のいずれかです。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

DIRECTMANIPULATION_INPUT_MODE_AUTOMATICDirect Manipulation の既定のモードです。このモードでは、視覚的な更新が入力に駆動されてコンポジターへプッシュされます。これは、アプリケーションがシステム提供の IDirectManipulationCompositor の実装を使用している場合に想定される動作モードです。

アプリケーションが独自の IDirectManipulationCompositor の実装を提供する場合は、DIRECTMANIPULATION_INPUT_MODE_MANUAL を設定してビューポートの更新モードを手動に切り替える必要があります。手動モードの場合、コンポジターは Direct Manipulation に対して Update を呼び出すたびに視覚的な更新をプルします。

DIRECTMANIPULATION_INPUT_MODE_MANUAL を設定してこのメソッドを呼び出すことは、SetViewportOptions(DIRECTMANIPULATION_VIEWPORT_OPTIONS_INPUT) を呼び出すことと同様です。ただし、SetViewportOptions を呼び出すと、他のすべての設定も上書きされます。

vtbl 29 HRESULT Stop()

マニピュレーションを停止し、ビューポートを準備完了(ready)状態に戻します。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

必須のスナップポイントが構成されている場合、コンテンツは最も近いスナップポイントへアニメーションで移動することがあります。

vtbl 30 HRESULT Abandon()

ビューポートが使用するすべてのリソースを解放し、メモリからの破棄に備えます。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

Abandon を呼び出した後は、そのビューポートに対して以降の関数呼び出しを行わないでください。Abandon の後に関数が呼び出された場合、E_INVALID_STATE が返されます。

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