直接操作

直接操作 API 可讓您建立絕佳的移動流覽、縮放和拖曳使用者體驗。 若要這樣做,它會處理區域或物件的觸控輸入、產生輸出轉換,並將轉換套用至 UI 元素。 您可以使用直接操作來優化回應性,並透過執行緒外輸入處理、選擇性的執行緒外輸入點擊測試和輸入/輸出預測來降低延遲。

任何使用直接操作來處理觸控互動的應用程式,都會顯示符合常見使用者互動指導方針的流暢Windows 8動畫和互動回饋行為。

開發人員讀者

直接操作 API 適用于知道 C/C++ 的資深開發人員、對 元件物件模型 (COM) 有穩固的瞭解,而且熟悉 Windows 程式設計概念。

執行階段需求求

直接操作是在 Windows 8 引進。 它同時包含在 32 位和 64 位版本中。

為何使用 DirectManipulation

以簡單且一致的方式處理互動

直接操作的運作方式是預先宣告區域或物件的行為和互動。 例如,網頁通常會設定為移動流覽和縮放。 在執行時間,輸入接著會透過簡單的 API 呼叫與此區域/物件相關聯。 從這一點開始,直接操作會執行處理輸入、套用條件約束和特質,以及產生輸出轉換的所有繁重工作。

建置回應式觸控應用程式

為了優化回應性並將延遲降到最低,直接操作處理會在與 UI 執行緒不同的獨立執行緒上發生。 因此,輸出轉換可以平行執行至 UI 執行緒上的活動。 UI 執行緒活動可能包含應用程式邏輯、轉譯、配置,以及處理器上耗用迴圈的任何其他專案。

實作彈性

直接操作隨附的介面提供輸入處理、互動辨識、意見反應通知和 UI 更新的完整支援。 介面也會納入 DirectComposition等系統服務。

基本概念

最基本的直接操作實作是由 檢視區內容互動所組成。 檢視區是能夠接收和處理使用者互動輸入的區域。 這也是使用者可以看到的內容區域。 內容是終端使用者可以看到的實際物件,以及移動或調整以回應使用者互動的內容。 直接操作所支援的主要使用者 互動 (也稱為 操作) 是移動流覽和縮放。 這些互動會分別將翻譯或縮放轉換套用至檢視區內的內容。 您可以在單一視窗中設定多個檢視區, (每個檢視區都有自己的內容) ,以建立豐富的 UI 體驗。

此圖顯示移動流覽前後的基本直接操作實作。

移動流覽前後的基本直接操作實作。

在直接操作初始化期間, 會具現化 DCompDirectManipulationCompositor 物件,並與直接操作相關聯。 此物件是 DirectComposition周圍的包裝函式,這是系統撰寫器。 物件負責套用輸出轉換和驅動視覺更新。

連絡人代表由 WM/_POINTERDOWN訊息中提供的pointerId所識別的觸控點。 收到 WM_POINTERDOWN 訊息時,應用程式會呼叫 SetContact。 應用程式會通知直接操作應處理的連絡人,以及應該回應這些連絡人的檢視區 () 。 鍵盤和滑鼠輸入具有特殊的 pointerId 值,以便直接操作適當地處理它們。

在上述基本案例中, 當 SetContact 稱為一些情況時:

  • 當使用者執行移動流覽時, WM/_POINTERCAPTURECHANGED 訊息會傳送至應用程式,以通知直接操作已取用連絡人。
  • 當使用者移動移動時,檢視區會引發 DirectComposition 包裝函式用來驅動螢幕視覺更新的更新事件。 對檢視區中的使用者移動流覽,內容會顯示在連絡人下方順暢移動。
  • 當使用者增益連絡人時,使用者會看到內容在轉換成慣性動畫時繼續移動,逐漸遞減直到到達最後的靜止位置為止。

處理鍵盤和滑鼠輸入

直接操作允許透過 ProcessInput API 從應用程式 UI 執行緒手動轉送鍵盤和滑鼠訊息,讓直接操作可以適當地處理它們。

DirectManipulation 和 HWND

直接操作與 Win32 HWND 相關聯,以便接收和處理該視窗的指標輸入訊息。 當直接操作計算輸出值時,它會對直接操作 元件物件模型進行非同步回呼, (COM) 應用程式中實作的物件。 這些回呼會通知應用程式已套用至 物件的轉換。 直接操作會藉由呼叫 Activate,在指定的 HWND 上啟動。

支援檔