MeshLib C++ Docs
Loading...
Searching...
No Matches
MRTouchpadWin32Handler.h
Go to the documentation of this file.
1#pragma once
2#ifdef _WIN32
3
6
7#pragma warning( push )
8#pragma warning( disable: 4265 )
9#pragma warning( disable: 4986 )
10#pragma warning( disable: 5204 )
11#pragma warning( disable: 5220 )
12#include <directmanipulation.h>
13#include <wrl.h>
14#pragma warning( pop )
15
16#include <map>
17
18namespace MR
19{
20
21// Touchpad event handler for Windows using Direct Manipulation API
22// More info: https://learn.microsoft.com/en-us/windows/win32/directmanipulation/direct-manipulation-portal
23class TouchpadWin32Handler : public TouchpadController::Handler
24{
25public:
26 TouchpadWin32Handler( GLFWwindow* window );
27 ~TouchpadWin32Handler() override;
28
29 static void CALLBACK TouchpadEventPoll( PVOID lpParam, BOOLEAN timerOrWaitFired );
30
31private:
32 HWND window_;
33
34 std::shared_ptr<Win32MessageHandler> msgHandler_;
35 boost::signals2::scoped_connection onWinMsg_;
36 void processPointerHitTestEvent_( WPARAM wParam );
37
38 Microsoft::WRL::ComPtr<IDirectManipulationManager> manager_;
39 Microsoft::WRL::ComPtr<IDirectManipulationUpdateManager> updateManager_;
40 Microsoft::WRL::ComPtr<IDirectManipulationViewport> viewport_;
41
42 class DirectManipulationViewportEventHandler;
43 Microsoft::WRL::ComPtr<DirectManipulationViewportEventHandler> eventHandler_;
44 DWORD eventHandlerCookie_;
45
46 friend class DirectManipulationViewportEventHandler;
47 HANDLE timerQueue_{ NULL };
48 HANDLE timer_{ NULL };
49 void startTouchpadEventPolling_();
50 void stopTouchpadEventPolling_();
51};
52
53} // namespace MR
54
55#endif
Definition MRCameraOrientationPlugin.h:8