Quelle winpointer.h
Sprache: C
/* GDK - The GIMP Drawing Kit
* Copyright ( C ) 2021 the GTK team
*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation ; either
* version 2 of the License , or ( at your option ) any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library . If not , see < http : //www.gnu.org/licenses/>.
*/
/* This code is derived from portions provided by the mingw-w64 project
* ( mingw - w64 . org ) , originally licensed under the Zope Public License
* ( ZPL ) version 2 . 1 , with modifications made on May 12 , 2021 .
* Legal notice of the Zope Public License version 2 . 1 follows :
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions are met :
*
* 1 . Redistributions in source code must retain the accompanying copyright
* notice , this list of conditions , and the following disclaimer .
* 2 . Redistributions in binary form must reproduce the accompanying
* copyright notice , this list of conditions , and the following disclaimer
* in the documentation and / or other materials provided with the
* distribution .
* 3 . Names of the copyright holders must not be used to endorse or promote
* products derived from this software without prior written permission
* from the copyright holders .
* 4 . The right to distribute this software or to use it for any purpose does
* not give you the right to use Servicemarks ( sm ) or Trademarks ( tm ) of
* the copyright holders . Use of them is covered by separate agreement
* with the copyright holders .
* 5 . If any files are modified , you must cause the modified files to carry
* prominent notices stating that you changed the files and the date of
* any change .
*/
#ifndef POINTER_FLAG_NONE
#include <windows.h>
#include <tchar.h>
#define WM_POINTERDEVICECHANGE 0 x238
#define WM_POINTERDEVICEINRANGE 0 x239
#define WM_POINTERDEVICEOUTOFRANGE 0 x23a
#define WM_NCPOINTERUPDATE 0 x0241
#define WM_NCPOINTERDOWN 0 x0242
#define WM_NCPOINTERUP 0 x0243
#define WM_POINTERUPDATE 0 x0245
#define WM_POINTERDOWN 0 x0246
#define WM_POINTERUP 0 x0247
#define WM_POINTERENTER 0 x0249
#define WM_POINTERLEAVE 0 x024a
#define WM_POINTERACTIVATE 0 x024b
#define WM_POINTERCAPTURECHANGED 0 x024c
#define WM_TOUCHHITTESTING 0 x024d
#define WM_POINTERWHEEL 0 x024e
#define WM_POINTERHWHEEL 0 x024f
#define DM_POINTERHITTEST 0 x0250
#define WM_POINTERROUTEDTO 0 x0251
#define WM_POINTERROUTEDAWAY 0 x0252
#define WM_POINTERROUTEDRELEASED 0 x0253
#define POINTER_FLAG_NONE 0 x00000000
#define POINTER_FLAG_NEW 0 x00000001
#define POINTER_FLAG_INRANGE 0 x00000002
#define POINTER_FLAG_INCONTACT 0 x00000004
#define POINTER_FLAG_FIRSTBUTTON 0 x00000010
#define POINTER_FLAG_SECONDBUTTON 0 x00000020
#define POINTER_FLAG_THIRDBUTTON 0 x00000040
#define POINTER_FLAG_FOURTHBUTTON 0 x00000080
#define POINTER_FLAG_FIFTHBUTTON 0 x00000100
#define POINTER_FLAG_PRIMARY 0 x00002000
#define POINTER_FLAG_CONFIDENCE 0 x00004000
#define POINTER_FLAG_CANCELED 0 x00008000
#define POINTER_FLAG_DOWN 0 x00010000
#define POINTER_FLAG_UPDATE 0 x00020000
#define POINTER_FLAG_UP 0 x00040000
#define POINTER_FLAG_WHEEL 0 x00080000
#define POINTER_FLAG_HWHEEL 0 x00100000
#define POINTER_FLAG_CAPTURECHANGED 0 x00200000
#define POINTER_FLAG_HASTRANSFORM 0 x00400000
#define POINTER_MOD_SHIFT (0 x0004)
#define POINTER_MOD_CTRL (0 x0008)
#define TOUCH_FLAG_NONE 0 x00000000
#define TOUCH_MASK_NONE 0 x00000000
#define TOUCH_MASK_CONTACTAREA 0 x00000001
#define TOUCH_MASK_ORIENTATION 0 x00000002
#define TOUCH_MASK_PRESSURE 0 x00000004
#define PEN_FLAG_NONE 0 x00000000
#define PEN_FLAG_BARREL 0 x00000001
#define PEN_FLAG_INVERTED 0 x00000002
#define PEN_FLAG_ERASER 0 x00000004
#define PEN_MASK_NONE 0 x00000000
#define PEN_MASK_PRESSURE 0 x00000001
#define PEN_MASK_ROTATION 0 x00000002
#define PEN_MASK_TILT_X 0 x00000004
#define PEN_MASK_TILT_Y 0 x00000008
#define POINTER_MESSAGE_FLAG_NEW 0 x00000001
#define POINTER_MESSAGE_FLAG_INRANGE 0 x00000002
#define POINTER_MESSAGE_FLAG_INCONTACT 0 x00000004
#define POINTER_MESSAGE_FLAG_FIRSTBUTTON 0 x00000010
#define POINTER_MESSAGE_FLAG_SECONDBUTTON 0 x00000020
#define POINTER_MESSAGE_FLAG_THIRDBUTTON 0 x00000040
#define POINTER_MESSAGE_FLAG_FOURTHBUTTON 0 x00000080
#define POINTER_MESSAGE_FLAG_FIFTHBUTTON 0 x00000100
#define POINTER_MESSAGE_FLAG_PRIMARY 0 x00002000
#define POINTER_MESSAGE_FLAG_CONFIDENCE 0 x00004000
#define POINTER_MESSAGE_FLAG_CANCELED 0 x00008000
#define GET_POINTERID_WPARAM(wParam) (LOWORD (wParam))
#define IS_POINTER_FLAG_SET_WPARAM(wParam, flag) (((DWORD)HIWORD (wParam) &(flag)) == (flag))
#define IS_POINTER_NEW_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM (wParam, POINTER_MESSAGE_FLAG_NEW)
#define IS_POINTER_INRANGE_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM (wParam, POINTER_MESSAGE_FLAG_INRANGE)
#define IS_POINTER_INCONTACT_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM (wParam, POINTER_MESSAGE_FLAG_INCONTACT)
#define IS_POINTER_FIRSTBUTTON_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM (wParam, POINTER_MESSAGE_FLAG_FIRSTBUTTON)
#define IS_POINTER_SECONDBUTTON_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM (wParam, POINTER_MESSAGE_FLAG_SECONDBUTTON)
#define IS_POINTER_THIRDBUTTON_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM (wParam, POINTER_MESSAGE_FLAG_THIRDBUTTON)
#define IS_POINTER_FOURTHBUTTON_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM (wParam, POINTER_MESSAGE_FLAG_FOURTHBUTTON)
#define IS_POINTER_FIFTHBUTTON_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM (wParam, POINTER_MESSAGE_FLAG_FIFTHBUTTON)
#define IS_POINTER_PRIMARY_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM (wParam, POINTER_MESSAGE_FLAG_PRIMARY)
#define HAS_POINTER_CONFIDENCE_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM (wParam, POINTER_MESSAGE_FLAG_CONFIDENCE)
#define IS_POINTER_CANCELED_WPARAM(wParam) IS_POINTER_FLAG_SET_WPARAM (wParam, POINTER_MESSAGE_FLAG_CANCELED)
#define PA_ACTIVATE MA_ACTIVATE
#define PA_NOACTIVATE MA_NOACTIVATE
typedef DWORD POINTER_INPUT_TYPE;
typedef UINT32 POINTER_FLAGS;
typedef UINT32 TOUCH_FLAGS;
typedef UINT32 TOUCH_MASK;
typedef UINT32 PEN_FLAGS;
typedef UINT32 PEN_MASK;
enum tagPOINTER_INPUT_TYPE {
PT_POINTER = 0 x00000001,
PT_TOUCH = 0 x00000002,
PT_PEN = 0 x00000003,
PT_MOUSE = 0 x00000004,
PT_TOUCHPAD = 0 x00000005
};
typedef enum tagFEEDBACK_TYPE {
FEEDBACK_TOUCH_CONTACTVISUALIZATION = 1 ,
FEEDBACK_PEN_BARRELVISUALIZATION = 2 ,
FEEDBACK_PEN_TAP = 3 ,
FEEDBACK_PEN_DOUBLETAP = 4 ,
FEEDBACK_PEN_PRESSANDHOLD = 5 ,
FEEDBACK_PEN_RIGHTTAP = 6 ,
FEEDBACK_TOUCH_TAP = 7 ,
FEEDBACK_TOUCH_DOUBLETAP = 8 ,
FEEDBACK_TOUCH_PRESSANDHOLD = 9 ,
FEEDBACK_TOUCH_RIGHTTAP = 10 ,
FEEDBACK_GESTURE_PRESSANDTAP = 11 ,
FEEDBACK_MAX = 0 xffffffff
} FEEDBACK_TYPE;
typedef enum tagPOINTER_BUTTON_CHANGE_TYPE {
POINTER_CHANGE_NONE,
POINTER_CHANGE_FIRSTBUTTON_DOWN,
POINTER_CHANGE_FIRSTBUTTON_UP,
POINTER_CHANGE_SECONDBUTTON_DOWN,
POINTER_CHANGE_SECONDBUTTON_UP,
POINTER_CHANGE_THIRDBUTTON_DOWN,
POINTER_CHANGE_THIRDBUTTON_UP,
POINTER_CHANGE_FOURTHBUTTON_DOWN,
POINTER_CHANGE_FOURTHBUTTON_UP,
POINTER_CHANGE_FIFTHBUTTON_DOWN,
POINTER_CHANGE_FIFTHBUTTON_UP,
} POINTER_BUTTON_CHANGE_TYPE;
typedef struct tagPOINTER_INFO {
POINTER_INPUT_TYPE pointerType;
UINT32 pointerId;
UINT32 frameId;
POINTER_FLAGS pointerFlags;
HANDLE sourceDevice;
HWND hwndTarget;
POINT ptPixelLocation;
POINT ptHimetricLocation;
POINT ptPixelLocationRaw;
POINT ptHimetricLocationRaw;
DWORD dwTime;
UINT32 historyCount;
INT32 InputData;
DWORD dwKeyStates;
UINT64 PerformanceCount;
POINTER_BUTTON_CHANGE_TYPE ButtonChangeType;
} POINTER_INFO;
typedef struct tagPOINTER_TOUCH_INFO {
POINTER_INFO pointerInfo;
TOUCH_FLAGS touchFlags;
TOUCH_MASK touchMask;
RECT rcContact;
RECT rcContactRaw;
UINT32 orientation;
UINT32 pressure;
} POINTER_TOUCH_INFO;
typedef struct tagPOINTER_PEN_INFO {
POINTER_INFO pointerInfo;
PEN_FLAGS penFlags;
PEN_MASK penMask;
UINT32 pressure;
UINT32 rotation;
INT32 tiltX;
INT32 tiltY;
} POINTER_PEN_INFO;
typedef enum {
POINTER_FEEDBACK_DEFAULT = 1 ,
POINTER_FEEDBACK_INDIRECT = 2 ,
POINTER_FEEDBACK_NONE = 3
} POINTER_FEEDBACK_MODE;
typedef struct tagUSAGE_PROPERTIES {
USHORT level;
USHORT page;
USHORT usage;
INT32 logicalMinimum;
INT32 logicalMaximum;
USHORT unit;
USHORT exponent;
BYTE count;
INT32 physicalMinimum;
INT32 physicalMaximum;
} USAGE_PROPERTIES, *PUSAGE_PROPERTIES;
typedef struct tagPOINTER_TYPE_INFO {
POINTER_INPUT_TYPE type;
union {
POINTER_TOUCH_INFO touchInfo;
POINTER_PEN_INFO penInfo;
} DUMMYUNIONNAME;
} POINTER_TYPE_INFO, *PPOINTER_TYPE_INFO;
#define POINTER_DEVICE_PRODUCT_STRING_MAX 520
#define PDC_ARRIVAL 0 x001
#define PDC_REMOVAL 0 x002
#define PDC_ORIENTATION_0 0 x004
#define PDC_ORIENTATION_90 0 x008
#define PDC_ORIENTATION_180 0 x010
#define PDC_ORIENTATION_270 0 x020
#define PDC_MODE_DEFAULT 0 x040
#define PDC_MODE_CENTERED 0 x080
#define PDC_MAPPING_CHANGE 0 x100
#define PDC_RESOLUTION 0 x200
#define PDC_ORIGIN 0 x400
#define PDC_MODE_ASPECTRATIOPRESERVED 0 x800
typedef enum tagPOINTER_DEVICE_TYPE {
POINTER_DEVICE_TYPE_INTEGRATED_PEN = 0 x00000001,
POINTER_DEVICE_TYPE_EXTERNAL_PEN = 0 x00000002,
POINTER_DEVICE_TYPE_TOUCH = 0 x00000003,
POINTER_DEVICE_TYPE_TOUCH_PAD = 0 x00000004,
POINTER_DEVICE_TYPE_MAX = 0 xffffffff
} POINTER_DEVICE_TYPE;
typedef struct tagPOINTER_DEVICE_INFO {
DWORD displayOrientation;
HANDLE device;
POINTER_DEVICE_TYPE pointerDeviceType;
HMONITOR monitor;
ULONG startingCursorId;
USHORT maxActiveContacts;
WCHAR productString[POINTER_DEVICE_PRODUCT_STRING_MAX];
} POINTER_DEVICE_INFO;
typedef struct tagPOINTER_DEVICE_PROPERTY {
INT32 logicalMin;
INT32 logicalMax;
INT32 physicalMin;
INT32 physicalMax;
UINT32 unit;
UINT32 unitExponent;
USHORT usagePageId;
USHORT usageId;
} POINTER_DEVICE_PROPERTY;
typedef enum tagPOINTER_DEVICE_CURSOR_TYPE {
POINTER_DEVICE_CURSOR_TYPE_UNKNOWN = 0 x00000000,
POINTER_DEVICE_CURSOR_TYPE_TIP = 0 x00000001,
POINTER_DEVICE_CURSOR_TYPE_ERASER = 0 x00000002,
POINTER_DEVICE_CURSOR_TYPE_MAX = 0 xffffffff
} POINTER_DEVICE_CURSOR_TYPE;
typedef struct tagPOINTER_DEVICE_CURSOR_INFO {
UINT32 cursorId;
POINTER_DEVICE_CURSOR_TYPE cursor;
} POINTER_DEVICE_CURSOR_INFO;
#endif /* POINTER_FLAG_NONE */
#ifndef MICROSOFT_TABLETPENSERVICE_PROPERTY
#define MICROSOFT_TABLETPENSERVICE_PROPERTY _T("MicrosoftTabletPenServiceProperty" )
#endif
Messung V0.5 in Prozent C=99 H=82 G=90
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-07-03)
¤
*© Formatika GbR, Deutschland
2026-07-09