diff --git a/collects/mred/private/wx/win32/utils.rkt b/collects/mred/private/wx/win32/utils.rkt index 727bc73683..bf9020a1da 100644 --- a/collects/mred/private/wx/win32/utils.rkt +++ b/collects/mred/private/wx/win32/utils.rkt @@ -67,8 +67,16 @@ (error who "call failed (~s)" (GetLastError))) -(define-user32 GetWindowLongPtrW (_wfun _HWND _int -> _pointer)) -(define-user32 SetWindowLongPtrW (_wfun _HWND _int _pointer -> _pointer)) +(define is-win64? + (equal? "win32\\x86_64" + (path->string (system-library-subpath #f)))) + +(define GetWindowLongPtrW + (get-ffi-obj (if is-win64? 'GetWindowLongPtrW 'GetWindowLongW) user32-lib + (_wfun _HWND _int -> _pointer))) +(define SetWindowLongPtrW + (get-ffi-obj (if is-win64? 'SetWindowLongPtrW 'SetWindowLongW) user32-lib + (_wfun _HWND _int _pointer -> _pointer))) (define-user32 SendMessageW (_wfun _HWND _UINT _WPARAM _LPARAM -> _LRESULT)) (define-user32 SendMessageW/str (_wfun _HWND _UINT _WPARAM _string/utf-16 -> _LRESULT)