_IManipulationEvents::ManipulationDelta 方法 (manipulations.h)
處理操作物件變更時所發生的事件。
語法
HRESULT ManipulationDelta(
[in] FLOAT x,
[in] FLOAT y,
[in] FLOAT translationDeltaX,
[in] FLOAT translationDeltaY,
[in] FLOAT scaleDelta,
[in] FLOAT expansionDelta,
[in] FLOAT rotationDelta,
[in] FLOAT cumulativeTranslationX,
[in] FLOAT cumulativeTranslationY,
[in] FLOAT cumulativeScale,
[in] FLOAT cumulativeExpansion,
[in] FLOAT cumulativeRotation
);
參數
[in] x
用戶定義座標中的原點 x 座標。
[in] y
用戶定義座標中的原點 Y 座標。
[in] translationDeltaX
自最後一個事件以來,使用者定義座標中 x 軸的轉譯變更。
[in] translationDeltaY
自上一個事件以來,使用者定義座標中 Y 軸的轉譯變更。
[in] scaleDelta
自上一個事件以來的縮放比例變更為先前小數位數的百分比。
[in] expansionDelta
自使用者定義座標的上一個事件以來的擴充變更。
[in] rotationDelta
自上一個事件開始以弧度為單位的旋轉變更。
[in] cumulativeTranslationX
從使用者定義座標中操作開始的 X 軸轉譯。
[in] cumulativeTranslationY
從使用者定義座標中操作開始的 Y 軸轉譯。
[in] cumulativeScale
自操作開頭起的縮放比例變更為原始大小的百分比。
[in] cumulativeExpansion
從使用者定義座標中操作的開頭開始開始,展開變更。
[in] cumulativeRotation
自弧度操作的開頭起,旋轉會變更。
傳回值
如果方法成功,它會傳回 S_OK。 如果失敗,則會傳回 HRESULT 錯誤碼。
備註
系統會針對 IInertiaProcessor 和 IManipulationProcessor 介面產生操作事件。 如果您在呼叫 ProcessMove 時使用 TOUCHINPUT 結構中的值,座標將會以百分之一像素為單位。
注意 使用慣性時,呼叫 IInertiaProcessor::Complete 可能會強制推斷目前的操作,導致將大型差異傳遞至 ManipulationCompleted 事件。
若要解決此問題,除了差異事件之外,還會對已完成的事件執行更新。
範例
下列程式代碼顯示ManipulationDelta方法的實作。
HRESULT STDMETHODCALLTYPE CManipulationEventSink::ManipulationDelta(
/* [in] */ FLOAT x,
/* [in] */ FLOAT y,
/* [in] */ FLOAT translationDeltaX,
/* [in] */ FLOAT translationDeltaY,
/* [in] */ FLOAT scaleDelta,
/* [in] */ FLOAT expansionDelta,
/* [in] */ FLOAT rotationDelta,
/* [in] */ FLOAT cumulativeTranslationX,
/* [in] */ FLOAT cumulativeTranslationY,
/* [in] */ FLOAT cumulativeScale,
/* [in] */ FLOAT cumulativeExpansion,
/* [in] */ FLOAT cumulativeRotation)
{
m_cDeltaEventCount ++;
// 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) |