From fd79abcc1fd258c21803ab87d143b10d796aa4ab Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 6 Dec 2010 12:39:45 -0700 Subject: [PATCH] win32: fix setwindowlongptr binding for 32-bit mode --- collects/mred/private/wx/win32/utils.rkt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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)