Module: wine Branch: master Commit: 6806451db38e2b656e4dc959900070a409f8ca7f URL: http://source.winehq.org/git/wine.git/?a=commit;h=6806451db38e2b656e4dc95990...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Feb 3 12:18:30 2010 +0100
user: Add icon handle mapping in the Get/SetClassWord/Long functions.
---
dlls/user.exe16/window.c | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/dlls/user.exe16/window.c b/dlls/user.exe16/window.c index b617c4d..e81d9ac 100644 --- a/dlls/user.exe16/window.c +++ b/dlls/user.exe16/window.c @@ -747,6 +747,16 @@ void WINAPI ValidateRgn16( HWND16 hwnd, HRGN16 hrgn ) */ WORD WINAPI GetClassWord16( HWND16 hwnd, INT16 offset ) { + HICON icon; + + switch (offset) + { + case GCLP_HCURSOR: + case GCLP_HICON: + case GCLP_HICONSM: + icon = (HICON)GetClassLongPtrW( WIN_Handle32(hwnd), offset ); + return get_icon_16( icon ); + } return GetClassWord( WIN_Handle32(hwnd), offset ); }
@@ -756,6 +766,16 @@ WORD WINAPI GetClassWord16( HWND16 hwnd, INT16 offset ) */ WORD WINAPI SetClassWord16( HWND16 hwnd, INT16 offset, WORD newval ) { + HICON icon; + + switch (offset) + { + case GCLP_HCURSOR: + case GCLP_HICON: + case GCLP_HICONSM: + icon = (HICON)SetClassLongPtrW( WIN_Handle32(hwnd), offset, (ULONG_PTR)get_icon_32(newval) ); + return get_icon_16( icon ); + } return SetClassWord( WIN_Handle32(hwnd), offset, newval ); }
@@ -773,6 +793,10 @@ LONG WINAPI GetClassLong16( HWND16 hwnd16, INT16 offset ) return (LONG_PTR)WINPROC_GetProc16( (WNDPROC)ret, FALSE ); case GCLP_MENUNAME: return MapLS( (void *)ret ); /* leak */ + case GCLP_HCURSOR: + case GCLP_HICON: + case GCLP_HICONSM: + return get_icon_16( (HICON)ret ); default: return ret; } @@ -784,8 +808,15 @@ LONG WINAPI GetClassLong16( HWND16 hwnd16, INT16 offset ) */ LONG WINAPI SetClassLong16( HWND16 hwnd16, INT16 offset, LONG newval ) { + HICON icon; + switch( offset ) { + case GCLP_HCURSOR: + case GCLP_HICON: + case GCLP_HICONSM: + icon = (HICON)SetClassLongPtrW( WIN_Handle32(hwnd16), offset, (ULONG_PTR)get_icon_32(newval) ); + return get_icon_16( icon ); case GCLP_WNDPROC: { WNDPROC new_proc = WINPROC_AllocProc16( (WNDPROC16)newval );