diff --git a/dlls/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0.spec b/dlls/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0.spec index 72cfe3d954f..3a043dc9c29 100644 --- a/dlls/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0.spec +++ b/dlls/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0/api-ms-win-rtcore-ntuser-wmpointer-l1-1-0.spec @@ -4,7 +4,7 @@ @ stub GetPointerDevice @ stub GetPointerDeviceProperties @ stub GetPointerDeviceRects -@ stub GetPointerDevices +@ stdcall GetPointerDevices(ptr ptr) user32.GetPointerDevices @ stub GetPointerFrameInfo @ stub GetPointerFrameInfoHistory @ stub GetPointerFramePenInfo diff --git a/dlls/user32/misc.c b/dlls/user32/misc.c index c3f4030a90d..dfdd5992994 100644 --- a/dlls/user32/misc.c +++ b/dlls/user32/misc.c @@ -846,6 +846,24 @@ BOOL WINAPI RegisterPointerDeviceNotifications(HWND hwnd, BOOL notifyrange) return TRUE; } +/********************************************************************** + * GetPointerDevices [USER32.@] + */ +BOOL WINAPI GetPointerDevices(UINT32 *device_count, POINTER_DEVICE_INFO *devices) +{ + FIXME("(%p %p): partial stub\n", device_count, devices); + + if (!device_count) + return FALSE; + + if (devices) + return FALSE; + + *device_count = 0; + return TRUE; +} + + static const WCHAR imeW[] = {'I','M','E',0}; const struct builtin_class_descr IME_builtin_class = { diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec index 2e5b203a852..7f652ee7223 100644 --- a/dlls/user32/user32.spec +++ b/dlls/user32/user32.spec @@ -354,6 +354,7 @@ @ stdcall GetOpenClipboardWindow() @ stdcall GetParent(long) @ stdcall GetPhysicalCursorPos(ptr) +@ stdcall GetPointerDevices(ptr ptr) @ stdcall GetPriorityClipboardFormat(ptr long) @ stdcall GetProcessDefaultLayout(ptr) @ stdcall GetProcessDpiAwarenessInternal(long ptr) diff --git a/include/winuser.h b/include/winuser.h index 648efbe0e21..f546a4a1f3d 100644 --- a/include/winuser.h +++ b/include/winuser.h @@ -3357,6 +3357,26 @@ typedef struct tagGESTUREINFO { } GESTUREINFO, *PGESTUREINFO; typedef GESTUREINFO const * PCGESTUREINFO; +#define POINTER_DEVICE_PRODUCT_STRING_MAX 520 + +typedef enum tagPOINTER_DEVICE_TYPE { + POINTER_DEVICE_TYPE_INTEGRATED_PEN = 0x00000001, + POINTER_DEVICE_TYPE_EXTERNAL_PEN = 0x00000002, + POINTER_DEVICE_TYPE_TOUCH = 0x00000003, + POINTER_DEVICE_TYPE_TOUCH_PAD = 0x00000004, + POINTER_DEVICE_TYPE_MAX = 0xFFFFFFFF +} 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; + #if defined(_WINGDI_) && !defined(NOGDI) WINUSERAPI LONG WINAPI ChangeDisplaySettingsA(LPDEVMODEA,DWORD); WINUSERAPI LONG WINAPI ChangeDisplaySettingsW(LPDEVMODEW,DWORD);