user: Add icon handle mapping in the Get/SetClassWord/Long functions.

This commit is contained in:
Alexandre Julliard 2010-02-03 12:18:30 +01:00
parent 48c8c8d7bd
commit 6806451db3
1 changed files with 31 additions and 0 deletions

View File

@ -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 );