#pragma once typedef BOOL(WINAPI *getTouchInputProc)( HTOUCHINPUT hTouchInput, UINT cInputs, PTOUCHINPUT pInputs, int cbSize ); typedef BOOL(WINAPI *closeTouchInputProc)( HTOUCHINPUT hTouchInput ); typedef BOOL(WINAPI *registerTouchProc)( HWND hWnd, ULONG ulFlags ); class TouchInputHandler { public: TouchInputHandler(); ~TouchInputHandler(); void handleTouchEvent(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); void registerTouchWindow(HWND wnd); bool hasTouch(); private: int ToTouchID(int windowsID, bool allowAllocate = true); bool GetTouchPoint(HWND hWnd, const TOUCHINPUT &input, float &x, float &y); void disablePressAndHold(HWND hWnd); void touchUp(int id, float x, float y); void touchDown(int id, float x, float y); void touchMove(int id, float x, float y); int touchIds[10]{}; getTouchInputProc touchInfo; closeTouchInputProc closeTouch; registerTouchProc registerTouch; };