IDirectManipulationManager::RegisterHitTestTarget 方法 (directmanipulation.h)
注册用于命中测试的专用线程。
语法
HRESULT RegisterHitTestTarget(
[in] HWND window,
[in, optional] HWND hitTestWindow,
[in] DIRECTMANIPULATION_HITTEST_TYPE type
);
参数
[in] window
通常从 UI 线程) 创建的 (main应用窗口的句柄。
[in, optional] hitTestWindow
应从命中测试线程) 创建在其中注册命中测试 (窗口的句柄。 传入 nullptr 以取消注册以前注册的命中测试目标。
[in] type
DIRECTMANIPULATION_HITTEST_TYPE中的值之 一。 指定 UI 窗口或命中测试窗口 (或两者) 接收命中测试 WM_POINTERDOWN 消息,以及按什么顺序接收。
返回值
如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
备注
命中测试通常在应用程序 UI 线程上执行。 应用程序 收到WM_POINTERDOWN消息 ,对其执行命中测试。 如果需要操作,则会在一个或多个视区上调用 SetContact 。 应用程序可以使用 RegisterHitTestTarget 方法将此命中测试责任委托给单独的命中测试线程。
成功注册专用命中测试目标后, WM_POINTERDOWN 在命中测试线程上处理消息。 如果需要操作(如平移或缩放),则从此线程调用 SetContact 。
如果未从命中测试线程调用 SetContact , 则可能会在 UI 线程上处理WM_POINTERDOWN消息,具体取决于注册期间指定的 DIRECTMANIPULATION_HITTEST_TYPE 。
如果命中测试线程或 UI 线程未调用 SetContact , 则直接操作 将忽略随后在 UI 线程上处理的输入。
要求
最低受支持的客户端 | Windows 8 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2012 [仅限桌面应用] |
目标平台 | Windows |
标头 | directmanipulation.h |