次の方法で共有


IDirectManipulationManager::RegisterHitTestTarget メソッド (directmanipulation.h)

ヒット テスト用の専用スレッドを登録します。

構文

HRESULT RegisterHitTestTarget(
  [in]           HWND                            window,
  [in, optional] HWND                            hitTestWindow,
  [in]           DIRECTMANIPULATION_HITTEST_TYPE type
);

パラメーター

[in] window

メイン アプリ ウィンドウのハンドル (通常は UI スレッドから作成されます)。

[in, optional] hitTestWindow

ヒット テストが登録されているウィンドウのハンドル (ヒット テスト スレッドから作成する必要があります)。 nullptr を渡して、以前に登録したヒット テスト ターゲットの登録を解除します。

[in] type

DIRECTMANIPULATION_HITTEST_TYPEの値の 1 つ。 UI ウィンドウまたはヒット テスト ウィンドウ (またはその両方) が、ヒット テスト WM_POINTERDOWN メッセージを受信するかどうか、および順序を指定します。

戻り値

メソッドが成功すると、 S_OKが返されます。 そうでない場合は、HRESULT エラー コードを返します。

解説

ヒット テストは通常、アプリケーション UI スレッドで実行されます。 アプリケーションは、ヒット テストが実行される WM_POINTERDOWN メッセージを受け取ります。 操作が必要な場合は、1 つ以上のビューポートで SetContact が呼び出されます。 アプリケーションは RegisterHitTestTarget メソッドを使用して、このヒット テストの責任を別のヒット テスト スレッドに委任できます。

専用のヒット テスト ターゲットが正常に登録されると、 WM_POINTERDOWN メッセージはヒット テスト スレッドで処理されます。 パンやズームなどの操作が必要な場合は、このスレッドから SetContact が呼び出されます。

ヒット テスト スレッドから SetContact が呼び出されない場合、登録時に指定されたDIRECTMANIPULATION_HITTEST_TYPEに応じて、WM_POINTERDOWNメッセージが UI スレッドで処理される場合があります。

ヒット テスト スレッドまたは UI スレッドによって SetContact が呼び出されない場合、 直接操作 は UI スレッドで処理される入力を無視します。

要件

   
サポートされている最小のクライアント Windows 8 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー directmanipulation.h

関連項目

IDirectManipulationManager