diff --git a/dlls/user.exe16/message.c b/dlls/user.exe16/message.c index 1ff58a769ea..af9da071380 100644 --- a/dlls/user.exe16/message.c +++ b/dlls/user.exe16/message.c @@ -2619,7 +2619,7 @@ static LRESULT static_proc16( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, HICON16 icon = LoadIcon16( HINSTANCE_16(cs->hInstance), cs->lpszName ); if (!icon) icon = LoadCursor16( HINSTANCE_16(cs->hInstance), cs->lpszName ); if (icon) wow_handlers32.static_proc( hwnd, STM_SETIMAGE, IMAGE_ICON, - (LPARAM)HICON_32(icon), FALSE ); + (LPARAM)get_icon_32(icon), FALSE ); break; } case SS_BITMAP: @@ -2633,10 +2633,10 @@ static LRESULT static_proc16( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, return ret; } case STM_SETICON16: - wParam = (WPARAM)HICON_32( (HICON16)wParam ); + wParam = (WPARAM)get_icon_32( (HICON16)wParam ); return wow_handlers32.static_proc( hwnd, STM_SETICON, wParam, lParam, FALSE ); case STM_GETICON16: - return HICON_16( wow_handlers32.static_proc( hwnd, STM_GETICON, wParam, lParam, FALSE )); + return get_icon_16( (HICON)wow_handlers32.static_proc( hwnd, STM_GETICON, wParam, lParam, FALSE )); default: return wow_handlers32.static_proc( hwnd, msg, wParam, lParam, unicode ); } @@ -2678,22 +2678,22 @@ static HICON alloc_icon_handle( unsigned int size ) { HGLOBAL16 handle = GlobalAlloc16( GMEM_MOVEABLE, size ); FarSetOwner16( handle, 0 ); - return HICON_32( handle ); + return (HICON)(ULONG_PTR)handle; } static struct tagCURSORICONINFO *get_icon_ptr( HICON handle ) { - return GlobalLock16( HICON_16(handle) ); + return GlobalLock16( LOWORD(handle) ); } static void release_icon_ptr( HICON handle, struct tagCURSORICONINFO *ptr ) { - GlobalUnlock16( HICON_16(handle) ); + GlobalUnlock16( LOWORD(handle) ); } static int free_icon_handle( HICON handle ) { - return GlobalFree16( HICON_16(handle) ); + return GlobalFree16( LOWORD(handle) ); } diff --git a/dlls/user.exe16/user.c b/dlls/user.exe16/user.c index d415f784c75..5462d944f29 100644 --- a/dlls/user.exe16/user.c +++ b/dlls/user.exe16/user.c @@ -289,6 +289,16 @@ static int free_icon_handle( HICON16 handle ) return GlobalFree16( handle ); } +HICON get_icon_32( HICON16 icon16 ) +{ + return (HICON)(ULONG_PTR)icon16; +} + +HICON16 get_icon_16( HICON icon ) +{ + return LOWORD( icon ); +} + static void add_shared_icon( HINSTANCE16 inst, HRSRC16 rsrc, HRSRC16 group, HICON16 icon ) { struct cache_entry *cache = HeapAlloc( GetProcessHeap(), 0, sizeof(*cache) ); @@ -471,7 +481,7 @@ BOOL16 WINAPI AnyPopup16(void) */ HCURSOR16 WINAPI SetCursor16(HCURSOR16 hCursor) { - return HCURSOR_16(SetCursor(HCURSOR_32(hCursor))); + return get_icon_16( SetCursor( get_icon_32(hCursor) )); } @@ -673,7 +683,7 @@ INT16 WINAPI FrameRect16( HDC16 hdc, const RECT16 *rect16, HBRUSH16 hbrush ) */ BOOL16 WINAPI DrawIcon16(HDC16 hdc, INT16 x, INT16 y, HICON16 hIcon) { - return DrawIcon(HDC_32(hdc), x, y, HICON_32(hIcon)); + return DrawIcon(HDC_32(hdc), x, y, get_icon_32(hIcon) ); } @@ -1453,7 +1463,7 @@ BOOL16 WINAPI ExitWindowsExec16( LPCSTR lpszExe, LPCSTR lpszParams ) */ HCURSOR16 WINAPI GetCursor16(void) { - return HCURSOR_16(GetCursor()); + return get_icon_16( GetCursor() ); } @@ -1986,7 +1996,12 @@ HANDLE16 WINAPI LoadImage16(HINSTANCE16 hinst, LPCSTR name, UINT16 type, INT16 c HRSRC16 hRsrc, hGroupRsrc; if (!hinst || (flags & LR_LOADFROMFILE)) - return HICON_16( LoadImageA( 0, name, type, cx, cy, flags )); + { + if (type == IMAGE_BITMAP) + return HBITMAP_16( LoadImageA( 0, name, type, cx, cy, flags )); + else + return get_icon_16( LoadImageA( 0, name, type, cx, cy, flags )); + } hinst = GetExePtr( hinst ); @@ -2110,7 +2125,7 @@ BOOL16 WINAPI DrawIconEx16(HDC16 hdc, INT16 xLeft, INT16 yTop, HICON16 hIcon, INT16 cxWidth, INT16 cyWidth, UINT16 istep, HBRUSH16 hbr, UINT16 flags) { - return DrawIconEx(HDC_32(hdc), xLeft, yTop, HICON_32(hIcon), cxWidth, cyWidth, + return DrawIconEx(HDC_32(hdc), xLeft, yTop, get_icon_32(hIcon), cxWidth, cyWidth, istep, HBRUSH_32(hbr), flags); } @@ -2563,8 +2578,7 @@ HICON16 WINAPI CreateIconFromResourceEx16(LPBYTE bits, UINT16 cbSize, INT16 width, INT16 height, UINT16 cFlag) { - return HICON_16(CreateIconFromResourceEx(bits, cbSize, bIcon, dwVersion, - width, height, cFlag)); + return get_icon_16( CreateIconFromResourceEx( bits, cbSize, bIcon, dwVersion, width, height, cFlag )); } @@ -2722,7 +2736,7 @@ DWORD WINAPI DragObject16( HWND16 hwndScope, HWND16 hWnd, UINT16 wObj, MSG msg; LPDRAGINFO16 lpDragInfo; SEGPTR spDragInfo; - HCURSOR hOldCursor=0, hBummer=0; + HCURSOR hOldCursor=0, hBummer=0, hCursor32; HGLOBAL16 hDragInfo = GlobalAlloc16( GMEM_SHARE | GMEM_ZEROINIT, 2*sizeof(DRAGINFO16)); HCURSOR hCurrentCursor = 0; HWND16 hCurrentWnd = 0; @@ -2738,7 +2752,7 @@ DWORD WINAPI DragObject16( HWND16 hwndScope, HWND16 hWnd, UINT16 wObj, return 0L; } - if(hCursor) hOldCursor = SetCursor(HCURSOR_32(hCursor)); + if ((hCursor32 = get_icon_32( hCursor ))) SetCursor( hCursor32 ); lpDragInfo->hWnd = hWnd; lpDragInfo->hScope = 0; @@ -2761,7 +2775,7 @@ DWORD WINAPI DragObject16( HWND16 hwndScope, HWND16 hWnd, UINT16 wObj, /* update DRAGINFO struct */ if( DRAG_QueryUpdate16(WIN_Handle32(hwndScope), spDragInfo) > 0 ) - hCurrentCursor = HCURSOR_32(hCursor); + hCurrentCursor = hCursor32; else { hCurrentCursor = hBummer; diff --git a/dlls/user.exe16/user_private.h b/dlls/user.exe16/user_private.h index 97cd66972ae..9c68b85a3dc 100644 --- a/dlls/user.exe16/user_private.h +++ b/dlls/user.exe16/user_private.h @@ -117,14 +117,11 @@ typedef struct tagDIALOGINFO #define DF_OWNERENABLED 0x0002 /* HANDLE16 <-> HANDLE conversions */ -#define HCURSOR_16(h32) (LOWORD(h32)) -#define HICON_16(h32) (LOWORD(h32)) #define HINSTANCE_16(h32) (LOWORD(h32)) - -#define HCURSOR_32(h16) ((HCURSOR)(ULONG_PTR)(h16)) -#define HICON_32(h16) ((HICON)(ULONG_PTR)(h16)) #define HINSTANCE_32(h16) ((HINSTANCE)(ULONG_PTR)(h16)) -#define HMODULE_32(h16) ((HMODULE)(ULONG_PTR)(h16)) + +extern HICON16 get_icon_16( HICON icon ) DECLSPEC_HIDDEN; +extern HICON get_icon_32( HICON16 icon16 ) DECLSPEC_HIDDEN; extern DWORD USER16_AlertableWait DECLSPEC_HIDDEN; extern WORD USER_HeapSel DECLSPEC_HIDDEN; diff --git a/dlls/user.exe16/window.c b/dlls/user.exe16/window.c index 0bd4518dcc1..b617c4df07e 100644 --- a/dlls/user.exe16/window.c +++ b/dlls/user.exe16/window.c @@ -1575,12 +1575,12 @@ ATOM WINAPI RegisterClassEx16( const WNDCLASSEX16 *wc ) wc32.cbClsExtra = wc->cbClsExtra; wc32.cbWndExtra = wc->cbWndExtra; wc32.hInstance = HINSTANCE_32(inst); - wc32.hIcon = HICON_32(wc->hIcon); - wc32.hCursor = HCURSOR_32(wc->hCursor); + wc32.hIcon = get_icon_32(wc->hIcon); + wc32.hCursor = get_icon_32( wc->hCursor ); wc32.hbrBackground = HBRUSH_32(wc->hbrBackground); wc32.lpszMenuName = MapSL(wc->lpszMenuName); wc32.lpszClassName = MapSL(wc->lpszClassName); - wc32.hIconSm = HICON_32(wc->hIconSm); + wc32.hIconSm = get_icon_32(wc->hIconSm); atom = RegisterClassExA( &wc32 ); if ((class = HeapAlloc( GetProcessHeap(), 0, sizeof(*class) ))) { @@ -1618,9 +1618,9 @@ BOOL16 WINAPI GetClassInfoEx16( HINSTANCE16 hInst16, SEGPTR name, WNDCLASSEX16 * wc->cbClsExtra = wc32.cbClsExtra; wc->cbWndExtra = wc32.cbWndExtra; wc->hInstance = (wc32.hInstance == user32_module) ? GetModuleHandle16("user") : HINSTANCE_16(wc32.hInstance); - wc->hIcon = HICON_16(wc32.hIcon); - wc->hIconSm = HICON_16(wc32.hIconSm); - wc->hCursor = HCURSOR_16(wc32.hCursor); + wc->hIcon = get_icon_16( wc32.hIcon ); + wc->hIconSm = get_icon_16( wc32.hIconSm ); + wc->hCursor = get_icon_16( wc32.hCursor ); wc->hbrBackground = HBRUSH_16(wc32.hbrBackground); wc->lpszClassName = 0; wc->lpszMenuName = MapLS(wc32.lpszMenuName); /* FIXME: leak */ @@ -2048,7 +2048,7 @@ BOOL16 WINAPI DrawCaptionTemp16( HWND16 hwnd, HDC16 hdc, const RECT16 *rect, } return DrawCaptionTempA( WIN_Handle32(hwnd), HDC_32(hdc), rect ? &rect32 : NULL, HFONT_32(hFont), - HICON_32(hIcon), str, uFlags & 0x1f ); + get_icon_32(hIcon), str, uFlags & 0x1f ); }