annotate foosdk/sdk/libPPUI/gesture.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #pragma once
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #ifndef WM_GESTURE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 #define WM_GESTURE 0x0119
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 #define WM_GESTURENOTIFY 0x011A
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 DECLARE_HANDLE(HGESTUREINFO);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 * Gesture flags - GESTUREINFO.dwFlags
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 #define GF_BEGIN 0x00000001
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 #define GF_INERTIA 0x00000002
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 #define GF_END 0x00000004
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 * Gesture IDs
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 #define GID_BEGIN 1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 #define GID_END 2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 #define GID_ZOOM 3
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 #define GID_PAN 4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 #define GID_ROTATE 5
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 #define GID_TWOFINGERTAP 6
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 #define GID_PRESSANDTAP 7
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 #define GID_ROLLOVER GID_PRESSANDTAP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 * Gesture information structure
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 * - Pass the HGESTUREINFO received in the WM_GESTURE message lParam into the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 * GetGestureInfo function to retrieve this information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 * - If cbExtraArgs is non-zero, pass the HGESTUREINFO received in the WM_GESTURE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 * message lParam into the GetGestureExtraArgs function to retrieve extended
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 * argument information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 typedef struct tagGESTUREINFO {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 UINT cbSize; // size, in bytes, of this structure (including variable length Args field)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 DWORD dwFlags; // see GF_* flags
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 DWORD dwID; // gesture ID, see GID_* defines
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 HWND hwndTarget; // handle to window targeted by this gesture
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 POINTS ptsLocation; // current location of this gesture
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 DWORD dwInstanceID; // internally used
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 DWORD dwSequenceID; // internally used
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 ULONGLONG ullArguments; // arguments for gestures whose arguments fit in 8 BYTES
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 UINT cbExtraArgs; // size, in bytes, of extra arguments, if any, that accompany this gesture
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 } GESTUREINFO, *PGESTUREINFO;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 typedef GESTUREINFO const * PCGESTUREINFO;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 * Gesture notification structure
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 * - The WM_GESTURENOTIFY message lParam contains a pointer to this structure.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 * - The WM_GESTURENOTIFY message notifies a window that gesture recognition is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 * in progress and a gesture will be generated if one is recognized under the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 * current gesture settings.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 typedef struct tagGESTURENOTIFYSTRUCT {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 UINT cbSize; // size, in bytes, of this structure
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 DWORD dwFlags; // unused
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 HWND hwndTarget; // handle to window targeted by the gesture
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 POINTS ptsLocation; // starting location
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 DWORD dwInstanceID; // internally used
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 } GESTURENOTIFYSTRUCT, *PGESTURENOTIFYSTRUCT;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 * Gesture argument helpers
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 * - Angle should be a double in the range of -2pi to +2pi
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 * - Argument should be an unsigned 16-bit value
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 #define GID_ROTATE_ANGLE_TO_ARGUMENT(_arg_) ((USHORT)((((_arg_) + 2.0 * 3.14159265) / (4.0 * 3.14159265)) * 65535.0))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 #define GID_ROTATE_ANGLE_FROM_ARGUMENT(_arg_) ((((double)(_arg_) / 65535.0) * 4.0 * 3.14159265) - 2.0 * 3.14159265)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 * Gesture information retrieval
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 * - HGESTUREINFO is received by a window in the lParam of a WM_GESTURE message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 WINUSERAPI
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 BOOL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 WINAPI
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 GetGestureInfo(
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 __in HGESTUREINFO hGestureInfo,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 __out PGESTUREINFO pGestureInfo);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 * Gesture extra arguments retrieval
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 * - HGESTUREINFO is received by a window in the lParam of a WM_GESTURE message.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 * - Size, in bytes, of the extra argument data is available in the cbExtraArgs
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 * field of the GESTUREINFO structure retrieved using the GetGestureInfo function.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 WINUSERAPI
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 BOOL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 WINAPI
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 GetGestureExtraArgs(
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 __in HGESTUREINFO hGestureInfo,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 __in UINT cbExtraArgs,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 __out_bcount(cbExtraArgs) PBYTE pExtraArgs);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 * Gesture information handle management
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 * - If an application processes the WM_GESTURE message, then once it is done
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 * with the associated HGESTUREINFO, the application is responsible for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 * closing the handle using this function. Failure to do so may result in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 * process memory leaks.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 * - If the message is instead passed to DefWindowProc, or is forwarded using
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 * one of the PostMessage or SendMessage class of API functions, the handle
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 * is transfered with the message and need not be closed by the application.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 WINUSERAPI
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 BOOL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 WINAPI
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 CloseGestureInfoHandle(
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 __in HGESTUREINFO hGestureInfo);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 * Gesture configuration structure
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 * - Used in SetGestureConfig and GetGestureConfig
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 * - Note that any setting not included in either GESTURECONFIG.dwWant or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 * GESTURECONFIG.dwBlock will use the parent window's preferences or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 * system defaults.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 typedef struct tagGESTURECONFIG {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 DWORD dwID; // gesture ID
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 DWORD dwWant; // settings related to gesture ID that are to be turned on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 DWORD dwBlock; // settings related to gesture ID that are to be turned off
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 } GESTURECONFIG, *PGESTURECONFIG;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 * Gesture configuration flags - GESTURECONFIG.dwWant or GESTURECONFIG.dwBlock
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 * Common gesture configuration flags - set GESTURECONFIG.dwID to zero
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 #define GC_ALLGESTURES 0x00000001
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 * Zoom gesture configuration flags - set GESTURECONFIG.dwID to GID_ZOOM
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 #define GC_ZOOM 0x00000001
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 * Pan gesture configuration flags - set GESTURECONFIG.dwID to GID_PAN
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 #define GC_PAN 0x00000001
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 #define GC_PAN_WITH_SINGLE_FINGER_VERTICALLY 0x00000002
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 #define GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY 0x00000004
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 #define GC_PAN_WITH_GUTTER 0x00000008
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 #define GC_PAN_WITH_INERTIA 0x00000010
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 * Rotate gesture configuration flags - set GESTURECONFIG.dwID to GID_ROTATE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 #define GC_ROTATE 0x00000001
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 * Two finger tap gesture configuration flags - set GESTURECONFIG.dwID to GID_TWOFINGERTAP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 #define GC_TWOFINGERTAP 0x00000001
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 * PressAndTap gesture configuration flags - set GESTURECONFIG.dwID to GID_PRESSANDTAP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 #define GC_PRESSANDTAP 0x00000001
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 #define GC_ROLLOVER GC_PRESSANDTAP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 #define GESTURECONFIGMAXCOUNT 256 // Maximum number of gestures that can be included
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 // in a single call to SetGestureConfig / GetGestureConfig
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 WINUSERAPI
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 BOOL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 WINAPI
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 SetGestureConfig(
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 __in HWND hwnd, // window for which configuration is specified
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 __in DWORD dwReserved, // reserved, must be 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 __in UINT cIDs, // count of GESTURECONFIG structures
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 __in_ecount(cIDs) PGESTURECONFIG pGestureConfig, // array of GESTURECONFIG structures, dwIDs will be processed in the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 // order specified and repeated occurances will overwrite previous ones
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 __in UINT cbSize); // sizeof(GESTURECONFIG)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 #define GCF_INCLUDE_ANCESTORS 0x00000001 // If specified, GetGestureConfig returns consolidated configuration
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 // for the specified window and it's parent window chain
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 WINUSERAPI
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 BOOL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 WINAPI
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 GetGestureConfig(
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 __in HWND hwnd, // window for which configuration is required
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 __in DWORD dwReserved, // reserved, must be 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 __in DWORD dwFlags, // see GCF_* flags
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 __in PUINT pcIDs, // *pcIDs contains the size, in number of GESTURECONFIG structures,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 // of the buffer pointed to by pGestureConfig
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 __inout_ecount(*pcIDs) PGESTURECONFIG pGestureConfig,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 // pointer to buffer to receive the returned array of GESTURECONFIG structures
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 __in UINT cbSize); // sizeof(GESTURECONFIG)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207 typedef BOOL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208 (WINAPI *pGetGestureInfo_t)(
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209 __in HGESTUREINFO hGestureInfo,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
210 __out PGESTUREINFO pGestureInfo);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
211
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
212 typedef BOOL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
213 (WINAPI * pCloseGestureInfoHandle_t)(
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
214 __in HGESTUREINFO hGestureInfo);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
215
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
216 typedef BOOL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
217 (WINAPI * pSetGestureConfig_t) (
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
218 __in HWND hwnd, // window for which configuration is specified
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
219 __in DWORD dwReserved, // reserved, must be 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
220 __in UINT cIDs, // count of GESTURECONFIG structures
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
221 __in_ecount(cIDs) PGESTURECONFIG pGestureConfig, // array of GESTURECONFIG structures, dwIDs will be processed in the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
222 // order specified and repeated occurances will overwrite previous ones
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
223 __in UINT cbSize); // sizeof(GESTURECONFIG)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
224
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
225 class CGestureAPI {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
226 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
227 CGestureAPI() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
228 HMODULE dll = GetModuleHandle(_T("user32.dll"));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
229
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
230 Bind(GetGestureInfo, dll, "GetGestureInfo");
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
231 Bind(CloseGestureInfoHandle, dll, "CloseGestureInfoHandle");
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
232 Bind(SetGestureConfig, dll, "SetGestureConfig");
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
233 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
234
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
235 bool IsAvailable() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
236 return this->GetGestureInfo != NULL;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
237 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
238
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
239 pGetGestureInfo_t GetGestureInfo;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
240 pCloseGestureInfoHandle_t CloseGestureInfoHandle;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
241 pSetGestureConfig_t SetGestureConfig;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
242 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
243 template<typename func_t> static void Bind(func_t & f, HMODULE dll, const char * name) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
244 f = reinterpret_cast<func_t>(GetProcAddress(dll, name));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
245 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
246 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
247 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
248
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
249 class CGestureAPI {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
250 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
251 inline static bool IsAvailable() { return true; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
252 inline static BOOL GetGestureInfo(HGESTUREINFO hGestureInfo, PGESTUREINFO pGestureInfo) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
253 return ::GetGestureInfo(hGestureInfo, pGestureInfo);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
254 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
255 inline static BOOL CloseGestureInfoHandle(HGESTUREINFO hGestureInfo) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
256 return ::CloseGestureInfoHandle(hGestureInfo);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
257 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
258
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
259 inline static BOOL SetGestureConfig(HWND hwnd, DWORD dwReserved, UINT cIDs, PGESTURECONFIG pGestureConfig, UINT cbSize) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
260 return ::SetGestureConfig(hwnd, dwReserved, cIDs, pGestureConfig, cbSize);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
261 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
262 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
263 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
264