Implement {G|S}etWindowLongPtr

György 'Nog' Jeney nog at sdf.lonestar.org
Sun Sep 29 08:41:07 CDT 2002


Apply this patch and observe nearly the whole wine recompile :)

ChangLog:
 * include/winuser.h
 * win/win.c
   Implement {G|S}etWindowLongPtr

nog.

-------------- next part --------------
Index: include/winuser.h
===================================================================
RCS file: /home/wine/wine/include/winuser.h,v
retrieving revision 1.142
diff -u -r1.142 winuser.h
--- include/winuser.h	28 Aug 2002 23:38:10 -0000	1.142
+++ include/winuser.h	29 Sep 2002 13:32:00 -0000
@@ -1346,6 +1346,16 @@
 #define DWL_DLGPROC	    4
 #define DWL_USER	    8
 
+  /* Offsets for GetWindowLongPtr() and SetWindowLongPtr() */
+#define GWLP_USERDATA        (-21)
+#define GWLP_ID              (-12)
+#define GWLP_HWNDPARENT      (-8)
+#define GWLP_HINSTANCE       (-6)
+#define GWLP_WNDPROC         (-4)
+#define DWLP_MSGRESULT       0
+#define DWLP_DLGPROC         DWLP_MSGRESULT + sizeof(LRESULT)
+#define DWLP_USER            DWLP_DLGPROC + sizeof(DLGPROC)
+
   /* GetWindow() constants */
 #define GW_HWNDFIRST	0
 #define GW_HWNDLAST	1
@@ -4114,6 +4124,9 @@
 LONG        WINAPI GetWindowLongA(HWND,INT);
 LONG        WINAPI GetWindowLongW(HWND,INT);
 #define     GetWindowLong WINELIB_NAME_AW(GetWindowLong)
+LONG_PTR    WINAPI GetWindowLongPtrA(HWND,INT);
+LONG_PTR    WINAPI GetWindowLongPtrW(HWND,INT);
+#define     GetWindowLongPtr WINELIB_NAME_AW(GetWindowLongPtr)
 BOOL        WINAPI GetWindowPlacement(HWND,LPWINDOWPLACEMENT);
 BOOL        WINAPI GetWindowRect(HWND,LPRECT);
 INT         WINAPI GetWindowRgn(HWND,HRGN);
@@ -4326,6 +4339,9 @@
 LONG        WINAPI SetWindowLongA(HWND,INT,LONG);
 LONG        WINAPI SetWindowLongW(HWND,INT,LONG);
 #define     SetWindowLong WINELIB_NAME_AW(SetWindowLong)
+LONG_PTR    WINAPI SetWindowLongA(HWND,INT,LONG_PTR);
+LONG_PTR    WINAPI SetWindowLongW(HWND,INT,LONG_PTR);
+#define     SetWindowLongPtr WINELIB_NAME_AW(SetWindowLongPtr)
 BOOL      WINAPI SetWindowPlacement(HWND,const WINDOWPLACEMENT*);
 HHOOK       WINAPI SetWindowsHookA(INT,HOOKPROC);
 HHOOK       WINAPI SetWindowsHookW(INT,HOOKPROC);
Index: windows/win.c
===================================================================
RCS file: /home/wine/wine/windows/win.c,v
retrieving revision 1.192
diff -u -r1.192 win.c
--- windows/win.c	25 Sep 2002 03:25:43 -0000	1.192
+++ windows/win.c	29 Sep 2002 13:32:13 -0000
@@ -2180,6 +2182,24 @@
 
 
 /**********************************************************************
+ *              GetWindowLongPtrA (USER32.@)
+ */
+LONG_PTR WINAPI GetWindowLongPtrA( HWND hwnd, INT offset )
+{
+    return WIN_GetWindowLong( hwnd, offset, WIN_PROC_32A );
+}
+
+
+/**********************************************************************
+ *              GetWindowLongPtrW (USER32.@)
+ */
+LONG_PTR WINAPI GetWindowLongPtrW( HWND hwnd, INT offset )
+{
+    return WIN_GetWindowLong( hwnd, offset, WIN_PROC_32W );
+}
+
+
+/**********************************************************************
  *		SetWindowLong (USER.136)
  */
 LONG WINAPI SetWindowLong16( HWND16 hwnd, INT16 offset, LONG newval )
@@ -2268,6 +2288,24 @@
     INT offset, /* [in] offset, in bytes, of location to alter */
     LONG newval /* [in] new value of location */
 ) {
+    return WIN_SetWindowLong( hwnd, offset, newval, WIN_PROC_32W );
+}
+
+
+/**********************************************************************
+ *              SetWindowLongPtrA (USER32.@)
+ */
+LONG_PTR WINAPI SetWindowLongPtrA( HWND hwnd, INT offset, LONG_PTR newval )
+{
+    return WIN_SetWindowLong( hwnd, offset, newval, WIN_PROC_32A );
+}
+
+
+/**********************************************************************
+ *              SetWindowLongPtrW (USER32.@)
+ */
+LONG_PTR WINAPI SetWindowLongPtrW( HWND hwnd, INT offset, LONG_PTR newval )
+{
     return WIN_SetWindowLong( hwnd, offset, newval, WIN_PROC_32W );
 }
 



More information about the wine-patches mailing list