_IManipulationEvents::ManipulationCompleted メソッド (manipulations.h)
操作または慣性が完了したときにイベントを処理します。
構文
HRESULT ManipulationCompleted(
[in] FLOAT x,
[in] FLOAT y,
[in] FLOAT cumulativeTranslationX,
[in] FLOAT cumulativeTranslationY,
[in] FLOAT cumulativeScale,
[in] FLOAT cumulativeExpansion,
[in] FLOAT cumulativeRotation
);
パラメーター
[in] x
ユーザー定義座標の原点 x 座標。
[in] y
ユーザー定義座標の原点 y 座標。
[in] cumulativeTranslationX
ユーザー定義座標での操作の開始以降の x 軸に関する総平行移動。
[in] cumulativeTranslationY
ユーザー定義座標での操作の開始以降の y 軸に関する合計平行移動。
[in] cumulativeScale
操作の開始以降のスケールの変化の合計を、元のサイズに対する割合として指定します。
[in] cumulativeExpansion
ユーザー定義座標での操作の開始以降の拡張の合計変更。
[in] cumulativeRotation
ラジアン単位での操作の開始以降の回転の合計変化。
戻り値
メソッドが成功した場合は、S_OK を返します。 失敗した場合は、HRESULT エラー コードが返されます。
注釈
操作イベントは、 IInertiaProcessor インターフェイスと IManipulationProcessor インターフェイスの両方に対して生成されます。 ProcessUp の呼び出しで TOUCHINPUT 構造体の値を使用している場合、座標はピクセルの 100 分の 1 になります。
メモ 慣性を使用する場合、 IInertiaProcessor::Complete を呼び出すと、現在の操作が強制的に外挿され、大きな差分が ManipulationCompleted イベントに渡される可能性があります。
この問題に対処するには、デルタ イベントに加えて、完了したイベントに対して更新を実行します。
例
次のコードは、ManipulationCompleted メソッドの実装を示しています。
HRESULT STDMETHODCALLTYPE CManipulationEventSink::ManipulationCompleted(
/* [in] */ FLOAT x,
/* [in] */ FLOAT y,
/* [in] */ FLOAT cumulativeTranslationX,
/* [in] */ FLOAT cumulativeTranslationY,
/* [in] */ FLOAT cumulativeScale,
/* [in] */ FLOAT cumulativeExpansion,
/* [in] */ FLOAT cumulativeRotation)
{
m_cCompletedEventCount ++;
m_fX = x;
m_fY = y;
m_fCumulativeTranslationX = cumulativeTranslationX;
m_fCumulativeTranslationY = cumulativeTranslationY;
m_fCumulativeScale = cumulativeScale;
m_fCumulativeExpansion = cumulativeExpansion;
m_fCumulativeRotation = cumulativeRotation;
// Place your code handler here to do any operations based on the manipulation.
return S_OK;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | manipulations.h (Manipulations.h を含む) |