diff --git a/media/doc/WINESYNC.txt b/media/doc/WINESYNC.txt index 4b82a0cb2c4..3ca038f04d0 100644 --- a/media/doc/WINESYNC.txt +++ b/media/doc/WINESYNC.txt @@ -361,6 +361,9 @@ user32 - win32ss/user/user32/windows/text.c # Forked (lstr.c) win32ss/user/user32/windows/winpos.c # Forked + win32ss/user/user32_vista/input.c # Synced to Wine-10.0 + win32ss/user/user32_vista/misc.c # Synced to Wine-10.0 + win32ss/user/user32_vista/win.c # Synced to Wine-10.0 schannel.c dll/win32/schannel/schannel_wine.c # synced to wine-1.7.17 (secur32/schannel.c) dll/win32/schannel/secur32_wine.c # partial sync to wine-1.7.17 (secur32/secur32.c) diff --git a/win32ss/user/user32/CMakeLists.txt b/win32ss/user/user32/CMakeLists.txt index ca2f2a143e2..2e7ac16ac0b 100644 --- a/win32ss/user/user32/CMakeLists.txt +++ b/win32ss/user/user32/CMakeLists.txt @@ -81,7 +81,7 @@ add_library(user32 MODULE ${CMAKE_CURRENT_BINARY_DIR}/user32.def) set_module_type(user32 win32dll UNICODE ENTRYPOINT DllMain 12) -target_link_libraries(user32 user32_vista_static user32_wsprintf wine win32ksys ${PSEH_LIB}) +target_link_libraries(user32 user32_vista_static user32_optional_vista user32_wsprintf wine win32ksys ${PSEH_LIB}) add_dependencies(user32 asm) if(MSVC AND (ARCH STREQUAL "i386")) diff --git a/win32ss/user/user32/user32.spec b/win32ss/user/user32/user32.spec index 7fe69be95a4..5b52db15f55 100644 --- a/win32ss/user/user32/user32.spec +++ b/win32ss/user/user32/user32.spec @@ -1,5 +1,6 @@ ; Functions exported by Win 2K3 SP2 @ stdcall ActivateKeyboardLayout(long long) NtUserActivateKeyboardLayout +@ stdcall -version=0x600+ AddClipboardFormatListener(ptr) @ stdcall AdjustWindowRect(ptr long long) @ stdcall AdjustWindowRectEx(ptr long long long) @ stdcall AlignRects(ptr long long long) @@ -37,6 +38,8 @@ @ stdcall ChangeDisplaySettingsW(ptr long) @ stdcall ChangeMenuA(long long ptr long long) @ stdcall ChangeMenuW(long long ptr long long) +@ stdcall -version=0x600+ ChangeWindowMessageFilter(ptr long) +@ stdcall -version=0x601+ ChangeWindowMessageFilterEx(ptr long long ptr) @ stdcall CharLowerA(str) @ stdcall CharLowerBuffA(str long) @ stdcall CharLowerBuffW(wstr long) @@ -67,6 +70,8 @@ @ stdcall ClipCursor(ptr) NtUserClipCursor @ stdcall CloseClipboard() NtUserCloseClipboard @ stdcall CloseDesktop(long) NtUserCloseDesktop +@ stdcall -version=0x601+ CloseGestureInfoHandle(ptr) +@ stdcall -version=0x601+ CloseTouchInputHandle(ptr) @ stdcall CloseWindow(long) @ stdcall CloseWindowStation(long) NtUserCloseWindowStation @ stdcall CopyAcceleratorTableA(long ptr long) @@ -95,6 +100,7 @@ @ stdcall CreateMenu() @ stdcall CreatePopupMenu() @ stdcall CreateSystemThreads(long) +@ stdcall -version=0xA00+ CreateSyntheticPointerDevice(long long long) @ stdcall CreateWindowExA(long str str long long long long long long long long ptr) @ stdcall CreateWindowExW(long wstr wstr long long long long long long long long ptr) @ stdcall CreateWindowStationA(str long long ptr) @@ -164,6 +170,8 @@ @ stdcall DisableProcessWindowsGhosting() @ stdcall DispatchMessageA(ptr) @ stdcall DispatchMessageW(ptr) +@ stdcall -version=0x600+ DisplayConfigGetDeviceInfo(ptr) +@ stdcall -version=0x600+ DisplayConfigSetDeviceInfo(ptr) @ stdcall DisplayExitWindowsWarnings(long) @ stdcall DlgDirListA(long str long long long) @ stdcall DlgDirListComboBoxA(long ptr long long long) @@ -225,6 +233,7 @@ @ stdcall EnumWindowStationsW(ptr long) @ stdcall EnumWindows(ptr long) @ stdcall EqualRect(ptr ptr) +@ stdcall -version=0x602+ EvaluateProximityToRect(ptr ptr ptr) @ stdcall ExcludeUpdateRgn(long long) NtUserExcludeUpdateRgn @ stdcall ExitWindowsEx(long long) @ stdcall FillRect(long ptr long) @@ -276,17 +285,23 @@ # GetDbgTagFlags @ stdcall GetDesktopWindow() @ stdcall GetDialogBaseUnits() +@ stdcall -version=0x602+ GetDisplayAutoRotationPreferences(ptr) +@ stdcall -version=0x600+ GetDisplayConfigBufferSizes(long ptr ptr) @ stdcall GetDlgCtrlID(long) @ stdcall GetDlgItem(long long) @ stdcall GetDlgItemInt(long long ptr long) @ stdcall GetDlgItemTextA(long long ptr long) @ stdcall GetDlgItemTextW(long long ptr long) @ stdcall GetDoubleClickTime() NtUserGetDoubleClickTime +@ stdcall -version=0x601+ GetDpiForMonitorInternal(long long ptr ptr) @ stdcall -version=0xA00+ GetDpiForSystem() @ stdcall -version=0xA00+ GetDpiForWindow(ptr) @ stdcall GetFocus() @ stdcall GetForegroundWindow() NtUserGetForegroundWindow @ stdcall GetGUIThreadInfo(long ptr) NtUserGetGUIThreadInfo +@ stdcall -version=0x601+ GetGestureConfig(long long long ptr ptr long) +@ stdcall -version=0x601+ GetGestureExtraArgs(long long ptr) +@ stdcall -version=0x601+ GetGestureInfo(long ptr) @ stdcall GetGuiResources(long long) NtUserGetGuiResources @ stdcall GetIconInfo(long ptr) @ stdcall GetInputDesktop() @@ -332,8 +347,14 @@ @ stdcall GetNextDlgTabItem(long long long) @ stdcall GetOpenClipboardWindow() NtUserGetOpenClipboardWindow @ stdcall GetParent(long) +@ stdcall -version=0x602+ GetPointerInfo(long ptr) +@ stdcall -version=0x602+ GetPointerTouchInfo(long ptr) +@ stdcall -version=0x602+ GetPointerTouchInfoHistory(long ptr ptr) +@ stdcall -version=0x601+ GetPointerDevices(ptr ptr) +@ stdcall -version=0x602+ GetPointerType(long ptr) @ stdcall GetPriorityClipboardFormat(ptr long) NtUserGetPriorityClipboardFormat @ stdcall GetProcessDefaultLayout(ptr) +@ stdcall -version=0xA00+ GetProcessDpiAwarenessInternal(long ptr) @ stdcall GetProcessWindowStation() NtUserGetProcessWindowStation @ stdcall GetProgmanWindow () @ stdcall GetPropA(long str) @@ -363,6 +384,7 @@ @ stdcall GetThreadDesktop(long) @ stdcall GetTitleBarInfo(long ptr) NtUserGetTitleBarInfo @ stdcall GetTopWindow(long) +@ stdcall -version=0x601+ GetTouchInputInfo(long long ptr long) @ stdcall GetUpdateRect(long ptr long) @ stdcall GetUpdateRgn(long long long) @ stdcall GetUserObjectInformationA(long long ptr long ptr) @@ -372,6 +394,7 @@ @ stdcall GetWindow(long long) @ stdcall GetWindowContextHelpId(long) @ stdcall GetWindowDC(long) NtUserGetWindowDC +@ stdcall -version=0x601+ GetWindowDisplayAffinity(long ptr) @ stdcall GetWindowInfo(long ptr) @ stdcall GetWindowLongA(long long) @ stdcall -arch=x86_64,arm64 GetWindowLongPtrA(ptr long) @@ -410,6 +433,7 @@ @ stdcall InsertMenuItemA(long long long ptr) @ stdcall InsertMenuItemW(long long long ptr) @ stdcall InsertMenuW(long long long long ptr) +@ stdcall -stub -version=0x600+ InternalGetWindowIcon(ptr long) @ stdcall InternalGetWindowText(long long long) @ stdcall IntersectRect(ptr ptr ptr) @ stdcall InvalidateRect(long ptr long) NtUserInvalidateRect @@ -434,13 +458,17 @@ @ stdcall IsIconic(long) @ stdcall IsMenu(long) @ stdcall -stub IsProcess16Bit() +@ stdcall -version=0x600+ IsProcessDPIAware() @ stdcall IsRectEmpty(ptr) @ stdcall IsSETEnabled() @ stdcall IsServerSideWindow(long) +@ stdcall -version=0x601+ IsTouchWindow(long ptr) +@ stdcall -stub -version=0xA00+ IsValidDpiAwarenessContext(long) @ stdcall IsWinEventHookInstalled(long) @ stdcall IsWindow(long) @ stdcall IsWindowEnabled(long) @ stdcall IsWindowInDestroy(long) +@ stdcall -version=0x600+ IsWindowRedirectedForPrint(long) @ stdcall IsWindowUnicode(long) @ stdcall IsWindowVisible(long) @ stdcall -stub IsWow64Message() @@ -474,6 +502,8 @@ @ stdcall LockWindowStation(long) NtUserLockWindowStation @ stdcall LockWindowUpdate(long) NtUserLockWindowUpdate @ stdcall LockWorkStation() NtUserLockWorkStation +@ stdcall -version=0x600+ LogicalToPhysicalPoint(long ptr) +@ stdcall -stub -version=0x602+ LogicalToPhysicalPointForPerMonitorDPI(long ptr) @ stdcall LookupIconIdFromDirectory(ptr long) @ stdcall LookupIconIdFromDirectoryEx(ptr long long long long) @ stdcall MBToWCSEx(long str long wstr long long) @@ -519,6 +549,7 @@ @ stdcall OpenWindowStationA(str long long) @ stdcall OpenWindowStationW(wstr long long) @ stdcall PackDDElParam(long long long) +@ stdcall -version=0x602+ PackTouchHitTestingProximityEvaluation(ptr ptr) @ stdcall PaintDesktop(long) NtUserPaintDesktop @ stdcall PaintMenuBar(long long long long long long) NtUserPaintMenuBar @ stdcall PeekMessageA(ptr long long long long) @@ -536,6 +567,7 @@ # PrivateSetDbgTag # PrivateSetRipFlags @ stdcall PtInRect(ptr double) +@ stdcall -version=0x600+ QueryDisplayConfig(long ptr ptr ptr ptr ptr) @ stdcall QuerySendMessage(ptr) NtUserQuerySendMessage @ stdcall RealChildWindowFromPoint(long double) ; Direct call NtUserRealChildWindowFromPoint @ stdcall RealGetWindowClass(long ptr long) RealGetWindowClassA @@ -556,16 +588,21 @@ @ stdcall RegisterHotKey(long long long long) NtUserRegisterHotKey @ stdcall RegisterLogonProcess(long long) @ stdcall RegisterMessagePumpHook(ptr) +@ stdcall -version=0x602+ RegisterPointerDeviceNotifications(long long) +@ stdcall -version=0x600+ RegisterPowerSettingNotification(long ptr long) @ stdcall RegisterRawInputDevices(ptr long long) @ stdcall RegisterServicesProcess(long) @ stdcall RegisterShellHookWindow(long) @ stdcall RegisterSystemThread(long long) @ stdcall RegisterTasklist(long) NtUserRegisterTasklist +@ stdcall -version=0x602+ RegisterTouchHitTestingWindow(long long) +@ stdcall -version=0x601+ RegisterTouchWindow(long long) @ stdcall RegisterUserApiHook(ptr) @ stdcall RegisterWindowMessageA(str) @ stdcall RegisterWindowMessageW(wstr) @ stdcall ReleaseCapture() @ stdcall ReleaseDC(long long) +@ stdcall -version=0x600+ RemoveClipboardFormatListener(long) @ stdcall RemoveMenu(long long long) NtUserRemoveMenu @ stdcall RemovePropA(long str) @ stdcall RemovePropW(long wstr) @@ -608,12 +645,15 @@ # SetDbgTag @ stdcall SetDebugErrorLevel(long) @ stdcall SetDeskWallpaper(ptr) +@ stdcall -version=0x602+ SetDisplayAutoRotationPreferences(long) +@ stdcall -version=0x600+ SetDisplayConfig(long ptr long ptr long) @ stdcall SetDlgItemInt(long long long long) @ stdcall SetDlgItemTextA(long long str) @ stdcall SetDlgItemTextW(long long wstr) @ stdcall SetDoubleClickTime(long) @ stdcall SetFocus(long) NtUserSetFocus @ stdcall SetForegroundWindow(long) +@ stdcall -version=0x601+ SetGestureConfig(ptr long long ptr long) @ stdcall SetInternalWindowPos(long long ptr ptr) NtUserSetInternalWindowPos @ stdcall SetKeyboardState(ptr) NtUserSetKeyboardState @ stdcall SetLastErrorEx(long long) @@ -629,7 +669,10 @@ @ stdcall SetMessageExtraInfo(long) @ stdcall SetMessageQueue(long) @ stdcall SetParent(long long) NtUserSetParent +@ stdcall -version=0x600+ SetProcessDPIAware() @ stdcall SetProcessDefaultLayout(long) +@ stdcall -version=0xA00+ SetProcessDpiAwarenessContext(long) +@ stdcall -version=0xA00+ SetProcessDpiAwarenessInternal(long) @ stdcall SetProcessWindowStation(long) NtUserSetProcessWindowStation @ stdcall SetProgmanWindow (long) @ stdcall SetPropA(long str long) @@ -654,7 +697,9 @@ @ stdcall SetUserObjectInformationW(long long ptr long) NtUserSetObjectInformation @ stdcall SetUserObjectSecurity(long ptr ptr) @ stdcall SetWinEventHook(long long long ptr long long long) +@ stdcall -version=0x601+ SetWindowCompositionAttribute(ptr ptr) @ stdcall SetWindowContextHelpId(long long) +@ stdcall -version=0x601+ SetWindowDisplayAffinity(long long) @ stdcall SetWindowLongA(long long long) @ stdcall -arch=x86_64,arm64 SetWindowLongPtrA(ptr long ptr) @ stdcall -arch=x86_64,arm64 SetWindowLongPtrW(ptr long ptr) @@ -677,6 +722,8 @@ @ stdcall ShowStartGlass(long) @ stdcall ShowWindow(long long) NtUserShowWindow @ stdcall ShowWindowAsync(long long) NtUserShowWindowAsync +@ stdcall -version=0x600+ ShutdownBlockReasonCreate(long wstr) +@ stdcall -version=0x600+ ShutdownBlockReasonDestroy(long) @ stdcall SoftModalMessageBox(ptr) @ stdcall SubtractRect(ptr ptr ptr) @ stdcall SwapMouseButton(long) @@ -713,6 +760,9 @@ @ stdcall UnregisterDeviceNotification(long) @ stdcall UnregisterHotKey(long long) NtUserUnregisterHotKey @ stdcall UnregisterMessagePumpHook() +@ stdcall -version=0x601+ UnregisterTouchWindow(ptr) +@ stdcall -version=0x600+ UnregisterPowerSettingNotification(ptr) +@ stdcall -version=0x602+ UnregisterSuspendResumeNotification(ptr) @ stdcall UnregisterUserApiHook() NtUserUnregisterUserApiHook @ stdcall UpdateLayeredWindow(long long ptr ptr long ptr long ptr long) @ stdcall UpdateLayeredWindowIndirect(long ptr) diff --git a/win32ss/user/user32_vista/CMakeLists.txt b/win32ss/user/user32_vista/CMakeLists.txt index 4b05f471946..3ca127b29ef 100644 --- a/win32ss/user/user32_vista/CMakeLists.txt +++ b/win32ss/user/user32_vista/CMakeLists.txt @@ -5,11 +5,29 @@ include_directories( include ${REACTOS_SOURCE_DIR}/win32ss/include) +list(APPEND VISTA_SOURCE + wine/input.c + wine/misc.c + wine/sysparams.c + wine/win.c) + + list(APPEND SOURCE dpi.c) +# These are just for Vista+ support +add_library(user32_optional_vista + ${VISTA_SOURCE}) +target_link_libraries(user32_optional_vista wine win32ksys) +add_dependencies(user32_optional_vista wine psdk) +if(MSVC) + # Disable warning C4312: 'type cast': conversion from 'unsigned int' to 'HANDLE' of greater size + target_compile_options(user32_optional_vista PRIVATE /wd4312) +endif() + +# These are required for WINE imports add_library(user32_vista_static - ${SOURCE}) + ${SOURCE}) target_link_libraries(user32_vista_static win32ksys) add_dependencies(user32_vista_static psdk) diff --git a/win32ss/user/user32_vista/dpi.c b/win32ss/user/user32_vista/dpi.c index 08d73e4e4e5..5b5bd737ecf 100644 --- a/win32ss/user/user32_vista/dpi.c +++ b/win32ss/user/user32_vista/dpi.c @@ -12,6 +12,9 @@ #include #include +HDC APIENTRY +NtUserGetDC(HWND hWnd); + #define NDEBUG #include @@ -24,7 +27,7 @@ GetDpiForSystem(VOID) { HDC hDC; UINT Dpi; - hDC = GetDC(NULL); + hDC = NtUserGetDC(NULL); Dpi = GetDeviceCaps(hDC, LOGPIXELSY); ReleaseDC(NULL, hDC); return Dpi; @@ -42,3 +45,91 @@ GetDpiForWindow( UNREFERENCED_PARAMETER(hWnd); return GetDpiForSystem(); } + +/* + * @stub + */ +BOOL +WINAPI +IsProcessDPIAware(VOID) +{ + UNIMPLEMENTED; + return FALSE; +} + +/* + * @stub + */ +BOOL +WINAPI +SetProcessDPIAware(VOID) +{ + UNIMPLEMENTED; + return FALSE; +} + +/* + * @stub + */ +BOOL +WINAPI +SetProcessDpiAwarenessContext( + _In_ DPI_AWARENESS_CONTEXT context) +{ + UNIMPLEMENTED; + return FALSE; +} + +/* + * @stub + */ +BOOL +WINAPI +GetProcessDpiAwarenessInternal( + _In_ HANDLE process, + _Out_ DPI_AWARENESS *awareness) +{ + UNIMPLEMENTED; + return FALSE; +} + +/* + * @stub + */ +BOOL +WINAPI +SetProcessDpiAwarenessInternal( + _In_ DPI_AWARENESS awareness) +{ + UNIMPLEMENTED; + return FALSE; +} + +/* + * @stub + */ +BOOL +WINAPI +GetDpiForMonitorInternal( + _In_ HMONITOR monitor, + _In_ UINT type, + _Out_ UINT *x, + _Out_ UINT *y) +{ + UNIMPLEMENTED; + return FALSE; +} + +/* + * @stub + */ +BOOL +WINAPI +LogicalToPhysicalPoint( + _In_ HWND hwnd, + _Inout_ POINT *point ) +{ + UNIMPLEMENTED; + return TRUE; +} + diff --git a/win32ss/user/user32_vista/wine/input.c b/win32ss/user/user32_vista/wine/input.c index 38c44d7d831..2d95c41ad1a 100644 --- a/win32ss/user/user32_vista/wine/input.c +++ b/win32ss/user/user32_vista/wine/input.c @@ -24,12 +24,141 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#ifdef __REACTOS__ +#define WIN32_NO_STATUS +#define _INC_WINDOWS +#define COM_NO_WINDOWS_H +#include +#include +#include +#include +DECLARE_HANDLE(HSYNTHETICPOINTERDEVICE); +typedef enum +{ + POINTER_FEEDBACK_DEFAULT = 1, + POINTER_FEEDBACK_INDIRECT = 2, + POINTER_FEEDBACK_NONE = 3, +} POINTER_FEEDBACK_MODE; + +typedef enum ORIENTATION_PREFERENCE { + ORIENTATION_PREFERENCE_NONE = 0x0, + ORIENTATION_PREFERENCE_LANDSCAPE = 0x1, + ORIENTATION_PREFERENCE_PORTRAIT = 0x2, + ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED = 0x4, + ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED = 0x8 +} ORIENTATION_PREFERENCE; + +/* Touch input definitions */ +DECLARE_HANDLE(HTOUCHINPUT); + + +typedef struct tagTOUCHINPUT { + LONG x; + LONG y; + HANDLE hSource; + DWORD dwID; + DWORD dwFlags; + DWORD dwMask; + DWORD dwTime; + ULONG_PTR dwExtraInfo; + DWORD cxContact; + DWORD cyContact; +} TOUCHINPUT, *PTOUCHINPUT; +typedef TOUCHINPUT const * PCTOUCHINPUT; + +DECLARE_HANDLE(HGESTUREINFO); + +#define GF_BEGIN 0x00000001 +#define GF_INERTIA 0x00000002 +#define GF_END 0x00000004 + +typedef struct tagGESTURECONFIG { + DWORD dwID; + DWORD dwWant; + DWORD dwBlock; +} GESTURECONFIG, *PGESTURECONFIG; + +typedef struct tagGESTUREINFO { + UINT cbSize; + DWORD dwFlags; + DWORD dwID; + HWND hwndTarget; + POINTS ptsLocation; + DWORD dwInstanceID; + DWORD dwSequenceID; + ULONGLONG ullArguments; + UINT cbExtraArgs; +} GESTUREINFO, *PGESTUREINFO; +typedef GESTUREINFO const * PCGESTUREINFO; + +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 PVOID HPOWERNOTIFY, *PHPOWERNOTIFY; +typedef UINT32 POINTER_FLAGS; +typedef DWORD POINTER_INPUT_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 UINT32 TOUCH_FLAGS; +#define TOUCH_FLAG_NONE 0x00000000 + +typedef UINT32 TOUCH_MASK; +#define TOUCH_MASK_NONE 0x00000000 +#define TOUCH_MASK_CONTACTAREA 0x00000001 +#define TOUCH_MASK_ORIENTATION 0x00000002 +#define TOUCH_MASK_PRESSURE 0x00000004 + +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; + +#else #include "user_private.h" #include "dbt.h" +#endif #include "wine/debug.h" +#ifndef __REACTOS__ #include "wine/plugplay.h" +#endif WINE_DEFAULT_DEBUG_CHANNEL(win); +#ifndef __REACTOS__ WINE_DECLARE_DEBUG_CHANNEL(keyboard); /*********************************************************************** @@ -681,6 +810,7 @@ LRESULT WINAPI DefRawInputProc( RAWINPUT **data, INT data_count, UINT header_siz return header_size == sizeof(RAWINPUTHEADER) ? 0 : -1; } +#endif /***************************************************************************** * CloseTouchInputHandle (USER32.@) @@ -797,7 +927,7 @@ BOOL WINAPI GetPointerTouchInfoHistory( UINT32 id, UINT32 *count, POINTER_TOUCH_ return FALSE; } - +#ifndef __REACTOS__ /******************************************************************* * SetForegroundWindow (USER32.@) */ @@ -880,6 +1010,7 @@ HWND WINAPI GetTaskmanWindow(void) { return NtUserGetTaskmanWindow(); } +#endif HSYNTHETICPOINTERDEVICE WINAPI CreateSyntheticPointerDevice(POINTER_INPUT_TYPE type, ULONG max_count, POINTER_FEEDBACK_MODE mode) { diff --git a/win32ss/user/user32_vista/wine/misc.c b/win32ss/user/user32_vista/wine/misc.c index 6333fcb48b4..0500682133f 100644 --- a/win32ss/user/user32_vista/wine/misc.c +++ b/win32ss/user/user32_vista/wine/misc.c @@ -23,6 +23,98 @@ #include +#ifdef __REACTOS__ +#define WIN32_NO_STATUS +#define _INC_WINDOWS +#define COM_NO_WINDOWS_H +#include +#include +#include +#include + +#define POINTER_DEVICE_PRODUCT_STRING_MAX 520 + +enum tagPOINTER_INPUT_TYPE { + PT_POINTER = 1, + PT_TOUCH, + PT_PEN, + PT_MOUSE, + PT_TOUCHPAD +}; + +typedef PVOID HPOWERNOTIFY, *PHPOWERNOTIFY; +typedef UINT32 POINTER_FLAGS; +typedef DWORD POINTER_INPUT_TYPE; + +typedef struct tagTOUCH_HIT_TESTING_PROXIMITY_EVALUATION +{ + UINT16 score; + POINT adjustedPoint; +} TOUCH_HIT_TESTING_PROXIMITY_EVALUATION, *PTOUCH_HIT_TESTING_PROXIMITY_EVALUATION; + +typedef struct tagTOUCH_HIT_TESTING_INPUT +{ + UINT32 pointerId; + POINT point; + RECT boundingBox; + RECT nonOccludedBoundingBox; + UINT32 orientation; +} TOUCH_HIT_TESTING_INPUT, *PTOUCH_HIT_TESTING_INPUT; + +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; + + +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; + + +#else #include "windef.h" #include "wine/windef16.h" #include "winbase.h" @@ -30,11 +122,13 @@ #include "controls.h" #include "imm.h" #include "user_private.h" - +#endif #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(win); +#ifndef __REACTOS__ + BOOL WINAPI ImmSetActiveContext(HWND, HIMC, BOOL); #define IMM_INIT_MAGIC 0x19650412 @@ -403,6 +497,7 @@ BOOL WINAPI UserHandleGrantAccess(HANDLE handle, HANDLE job, BOOL grant) FIXME("(%p,%p,%d): stub\n", handle, job, grant); return TRUE; } +#endif /********************************************************************** * RegisterPowerSettingNotification [USER32.@] @@ -532,6 +627,7 @@ BOOL WINAPI GetPointerInfo(UINT32 id, POINTER_INFO *info) return FALSE; } +#ifndef __REACTOS__ LRESULT WINAPI ImeWndProcA( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { if (!imm_ime_wnd_proc) return DefWindowProcA(hwnd, msg, wParam, lParam); @@ -543,3 +639,52 @@ LRESULT WINAPI ImeWndProcW( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) if (!imm_ime_wnd_proc) return DefWindowProcW(hwnd, msg, wParam, lParam); return imm_ime_wnd_proc( hwnd, msg, wParam, lParam, FALSE ); } +#endif + +#ifdef __REACTOS__ +//wine/message.c stubs +typedef struct tagCHANGEFILTERSTRUCT { + DWORD cbSize; + DWORD ExtStatus; +} CHANGEFILTERSTRUCT, *PCHANGEFILTERSTRUCT; + +/****************************************************************** + * ChangeWindowMessageFilter (USER32.@) + */ +BOOL WINAPI ChangeWindowMessageFilter( UINT message, DWORD flag ) +{ + FIXME( "%x %08lx\n", message, flag ); + return TRUE; +} + +/****************************************************************** + * ChangeWindowMessageFilterEx (USER32.@) + */ +BOOL WINAPI ChangeWindowMessageFilterEx( HWND hwnd, UINT message, DWORD action, CHANGEFILTERSTRUCT *changefilter ) +{ + FIXME( "%p %x %ld %p\n", hwnd, message, action, changefilter ); + return TRUE; +} + +//wine/user_main.c +/*********************************************************************** + * ShutdownBlockReasonDestroy (USER32.@) + */ + +BOOL WINAPI ShutdownBlockReasonDestroy(HWND hwnd) +{ + FIXME("(%p): stub\n", hwnd); + SetLastError( ERROR_CALL_NOT_IMPLEMENTED ); + return FALSE; +} + +/*********************************************************************** + * ShutdownBlockReasonCreate (USER32.@) + */ +BOOL WINAPI ShutdownBlockReasonCreate(HWND hwnd, LPCWSTR reason) +{ + FIXME("(%p, %s): stub\n", hwnd, debugstr_w(reason)); + SetLastError( ERROR_CALL_NOT_IMPLEMENTED ); + return FALSE; +} +#endif diff --git a/win32ss/user/user32_vista/wine/sysparams.c b/win32ss/user/user32_vista/wine/sysparams.c new file mode 100644 index 00000000000..20c34f6d5e1 --- /dev/null +++ b/win32ss/user/user32_vista/wine/sysparams.c @@ -0,0 +1,291 @@ + +#define WIN32_NO_STATUS +#define _INC_WINDOWS +#define COM_NO_WINDOWS_H +#include +#include +#include +#include +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(win); + +typedef enum DISPLAYCONFIG_TOPOLOGY_ID +{ + DISPLAYCONFIG_TOPOLOGY_INTERNAL = 0x00000001, + DISPLAYCONFIG_TOPOLOGY_CLONE = 0x00000002, + DISPLAYCONFIG_TOPOLOGY_EXTEND = 0x00000004, + DISPLAYCONFIG_TOPOLOGY_EXTERNAL = 0x00000008, + DISPLAYCONFIG_TOPOLOGY_FORCE_UINT32 = 0xFFFFFFFF +} DISPLAYCONFIG_TOPOLOGY_ID; + +typedef enum +{ + DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME = 1, + DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME = 2, + DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE = 3, + DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME = 4, + DISPLAYCONFIG_DEVICE_INFO_SET_TARGET_PERSISTENCE = 5, + DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_BASE_TYPE = 6, + DISPLAYCONFIG_DEVICE_INFO_GET_SUPPORT_VIRTUAL_RESOLUTION = 7, + DISPLAYCONFIG_DEVICE_INFO_SET_SUPPORT_VIRTUAL_RESOLUTION = 8, + DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO = 9, + DISPLAYCONFIG_DEVICE_INFO_SET_ADVANCED_COLOR_STATE = 10, + DISPLAYCONFIG_DEVICE_INFO_GET_SDR_WHITE_LEVEL = 11, + DISPLAYCONFIG_DEVICE_INFO_GET_MONITOR_SPECIALIZATION = 12, + DISPLAYCONFIG_DEVICE_INFO_SET_MONITOR_SPECIALIZATION = 13, + DISPLAYCONFIG_DEVICE_INFO_SET_RESERVED1 = 14, + DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO_2 = 15, + DISPLAYCONFIG_DEVICE_INFO_SET_HDR_STATE = 16, + DISPLAYCONFIG_DEVICE_INFO_SET_WCG_STATE = 17, + DISPLAYCONFIG_DEVICE_INFO_FORCE_UINT32 = 0xFFFFFFFF +} DISPLAYCONFIG_DEVICE_INFO_TYPE; + +typedef struct DISPLAYCONFIG_DEVICE_INFO_HEADER +{ + DISPLAYCONFIG_DEVICE_INFO_TYPE type; + UINT32 size; + LUID adapterId; + UINT32 id; +} DISPLAYCONFIG_DEVICE_INFO_HEADER; + +typedef struct DISPLAYCONFIG_DESKTOP_IMAGE_INFO { + POINTL PathSourceSize; + RECTL DesktopImageRegion; + RECTL DesktopImageClip; +} DISPLAYCONFIG_DESKTOP_IMAGE_INFO; + +typedef enum { + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = -1, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 = 0, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO = 1, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO = 2, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO = 3, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI = 4, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI = 5, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS = 6, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN = 8, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI = 9, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = 10, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = 11, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = 12, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = 13, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = 14, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST = 15, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_WIRED = 16, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_VIRTUAL = 17, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_USB_TUNNEL, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = 0x80000000, + DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32 = 0xFFFFFFFF +} DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY; + +typedef enum { + DISPLAYCONFIG_ROTATION_IDENTITY = 1, + DISPLAYCONFIG_ROTATION_ROTATE90 = 2, + DISPLAYCONFIG_ROTATION_ROTATE180 = 3, + DISPLAYCONFIG_ROTATION_ROTATE270 = 4, + DISPLAYCONFIG_ROTATION_FORCE_UINT32 = 0xFFFFFFFF +} DISPLAYCONFIG_ROTATION; + +typedef enum { + DISPLAYCONFIG_SCALING_IDENTITY = 1, + DISPLAYCONFIG_SCALING_CENTERED = 2, + DISPLAYCONFIG_SCALING_STRETCHED = 3, + DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX = 4, + DISPLAYCONFIG_SCALING_CUSTOM = 5, + DISPLAYCONFIG_SCALING_PREFERRED = 128, + DISPLAYCONFIG_SCALING_FORCE_UINT32 = 0xFFFFFFFF +} DISPLAYCONFIG_SCALING; + +typedef struct DISPLAYCONFIG_RATIONAL { + UINT32 Numerator; + UINT32 Denominator; +} DISPLAYCONFIG_RATIONAL; + +typedef enum { + DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED = 0, + DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE = 1, + DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED = 2, + DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_UPPERFIELDFIRST, + DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST = 3, + DISPLAYCONFIG_SCANLINE_ORDERING_FORCE_UINT32 = 0xFFFFFFFF +} DISPLAYCONFIG_SCANLINE_ORDERING; + +typedef struct DISPLAYCONFIG_PATH_TARGET_INFO { + LUID adapterId; + UINT32 id; + union { + UINT32 modeInfoIdx; + struct { + UINT32 desktopModeInfoIdx : 16; + UINT32 targetModeInfoIdx : 16; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology; + DISPLAYCONFIG_ROTATION rotation; + DISPLAYCONFIG_SCALING scaling; + DISPLAYCONFIG_RATIONAL refreshRate; + DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering; + BOOL targetAvailable; + UINT32 statusFlags; +} DISPLAYCONFIG_PATH_TARGET_INFO; + +typedef struct DISPLAYCONFIG_PATH_SOURCE_INFO { + LUID adapterId; + UINT32 id; + union { + UINT32 modeInfoIdx; + struct { + UINT32 cloneGroupId : 16; + UINT32 sourceModeInfoIdx : 16; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + UINT32 statusFlags; +} DISPLAYCONFIG_PATH_SOURCE_INFO; + +typedef struct DISPLAYCONFIG_PATH_INFO { + DISPLAYCONFIG_PATH_SOURCE_INFO sourceInfo; + DISPLAYCONFIG_PATH_TARGET_INFO targetInfo; + UINT32 flags; +} DISPLAYCONFIG_PATH_INFO; + +typedef enum { + DISPLAYCONFIG_PIXELFORMAT_8BPP = 1, + DISPLAYCONFIG_PIXELFORMAT_16BPP = 2, + DISPLAYCONFIG_PIXELFORMAT_24BPP = 3, + DISPLAYCONFIG_PIXELFORMAT_32BPP = 4, + DISPLAYCONFIG_PIXELFORMAT_NONGDI = 5, + DISPLAYCONFIG_PIXELFORMAT_FORCE_UINT32 = 0xffffffff +} DISPLAYCONFIG_PIXELFORMAT; + +typedef struct DISPLAYCONFIG_SOURCE_MODE +{ + UINT32 width; + UINT32 height; + DISPLAYCONFIG_PIXELFORMAT pixelFormat; + POINTL position; +} DISPLAYCONFIG_SOURCE_MODE; +typedef struct DISPLAYCONFIG_2DREGION { + UINT32 cx; + UINT32 cy; +} DISPLAYCONFIG_2DREGION; + +typedef struct DISPLAYCONFIG_VIDEO_SIGNAL_INFO { + UINT64 pixelRate; + DISPLAYCONFIG_RATIONAL hSyncFreq; + DISPLAYCONFIG_RATIONAL vSyncFreq; + DISPLAYCONFIG_2DREGION activeSize; + DISPLAYCONFIG_2DREGION totalSize; + union { + struct { + UINT32 videoStandard : 16; + UINT32 vSyncFreqDivider : 6; + UINT32 reserved : 10; + } AdditionalSignalInfo; + UINT32 videoStandard; + } DUMMYUNIONNAME; + DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering; +} DISPLAYCONFIG_VIDEO_SIGNAL_INFO; +typedef struct DISPLAYCONFIG_TARGET_MODE +{ + DISPLAYCONFIG_VIDEO_SIGNAL_INFO targetVideoSignalInfo; +} DISPLAYCONFIG_TARGET_MODE; +typedef enum { + DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE = 1, + DISPLAYCONFIG_MODE_INFO_TYPE_TARGET = 2, + DISPLAYCONFIG_MODE_INFO_TYPE_DESKTOP_IMAGE = 3, + DISPLAYCONFIG_MODE_INFO_TYPE_FORCE_UINT32 = 0xFFFFFFFF +} DISPLAYCONFIG_MODE_INFO_TYPE; +typedef struct DISPLAYCONFIG_MODE_INFO { + DISPLAYCONFIG_MODE_INFO_TYPE infoType; + UINT32 id; + LUID adapterId; + union { + DISPLAYCONFIG_TARGET_MODE targetMode; + DISPLAYCONFIG_SOURCE_MODE sourceMode; + DISPLAYCONFIG_DESKTOP_IMAGE_INFO desktopImageInfo; + } DUMMYUNIONNAME; +} DISPLAYCONFIG_MODE_INFO; + + +LONG +WINAPI +GetDisplayConfigBufferSizes( + UINT32 flags, + UINT32 *numPathArrayElements, + UINT32 *numModeInfoArrayElements) +{ + *numPathArrayElements = 0; + *numModeInfoArrayElements = 0; + return 0; +} + +LONG +WINAPI +QueryDisplayConfig( + UINT32 flags, + UINT32 *numPathArrayElements, + DISPLAYCONFIG_PATH_INFO *pathArray, + UINT32 *numModeInfoArrayElements, + DISPLAYCONFIG_MODE_INFO *modeInfoArray, + DISPLAYCONFIG_TOPOLOGY_ID *currentTopologyId) +{ + return ERROR_ACCESS_DENIED; +} + +typedef enum ORIENTATION_PREFERENCE { + ORIENTATION_PREFERENCE_NONE = 0x0, + ORIENTATION_PREFERENCE_LANDSCAPE = 0x1, + ORIENTATION_PREFERENCE_PORTRAIT = 0x2, + ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED = 0x4, + ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED = 0x8 +} ORIENTATION_PREFERENCE; + +/*********************************************************************** + * DisplayConfigGetDeviceInfo (USER32.@) + */ +LONG WINAPI DisplayConfigGetDeviceInfo(DISPLAYCONFIG_DEVICE_INFO_HEADER *packet) +{ + FIXME( "DisplayConfigGetDeviceInfo: stub!\n" ); + return 1; +} + +/*********************************************************************** + * DisplayConfigSetDeviceInfo (USER32.@) + */ +LONG WINAPI DisplayConfigSetDeviceInfo( DISPLAYCONFIG_DEVICE_INFO_HEADER *packet ) +{ + FIXME( "DisplayConfigSetDeviceInfo: stub!\n" ); + return 1; +} + +/********************************************************************** + * GetDisplayAutoRotationPreferences (USER32.@) + */ +BOOL WINAPI GetDisplayAutoRotationPreferences( ORIENTATION_PREFERENCE *orientation ) +{ + FIXME("(%p): stub\n", orientation); + *orientation = ORIENTATION_PREFERENCE_NONE; + return TRUE; +} + +/*********************************************************************** + * SetDisplayConfig (USER32.@) + */ +LONG WINAPI SetDisplayConfig(UINT32 path_info_count, DISPLAYCONFIG_PATH_INFO *path_info, UINT32 mode_info_count, + DISPLAYCONFIG_MODE_INFO *mode_info, UINT32 flags) +{ + FIXME("path_info_count %u, path_info %p, mode_info_count %u, mode_info %p, flags %#x stub.\n", + path_info_count, path_info, mode_info_count, mode_info, flags); + + return ERROR_SUCCESS; +} + +/********************************************************************** + * SetDisplayAutoRotationPreferences (USER32.@) + */ +BOOL WINAPI SetDisplayAutoRotationPreferences( ORIENTATION_PREFERENCE orientation ) +{ + FIXME("(%d): stub\n", orientation); + return TRUE; +} diff --git a/win32ss/user/user32_vista/wine/win.c b/win32ss/user/user32_vista/wine/win.c index 99f681a3f9c..1ce81abec91 100644 --- a/win32ss/user/user32_vista/wine/win.c +++ b/win32ss/user/user32_vista/wine/win.c @@ -18,18 +18,28 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#ifdef __REACTOS__ +#define WIN32_NO_STATUS +#define _INC_WINDOWS +#define COM_NO_WINDOWS_H +#include +#include +#include +#include +#else #include "ntstatus.h" #define WIN32_NO_STATUS #include "user_private.h" #include "controls.h" #include "winver.h" #include "wine/asm.h" +#endif #include "wine/exception.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(win); - +#ifndef __REACTOS__ #ifdef __i386__ /* Some apps pass a non-stdcall proc to EnumChildWindows, * so we need a small assembly wrapper to call the proc. @@ -1686,6 +1696,8 @@ LONG_PTR WINAPI SetWindowLongPtrA( HWND hwnd, INT offset, LONG_PTR newval ) #endif /* _WIN64 */ +#endif + /***************************************************************************** * GetWindowDisplayAffinity (USER32.@) */