| /* |
| * USER 16-bit thunks |
| * |
| * Copyright 1996, 1997 Alexandre Julliard |
| * Copyright 1998 Ulrich Weigand |
| */ |
| |
| #include "windef.h" |
| #include "wingdi.h" |
| #include "wine/winuser16.h" |
| #include "win.h" |
| #include "callback.h" |
| |
| /* ### start build ### */ |
| extern WORD CALLBACK THUNK_CallTo16_word_wl (FARPROC16,WORD,LONG); |
| extern WORD CALLBACK THUNK_CallTo16_word_wlw (FARPROC16,WORD,LONG,WORD); |
| extern WORD CALLBACK THUNK_CallTo16_word_wlwww(FARPROC16,WORD,LONG,WORD,WORD,WORD); |
| /* ### stop build ### */ |
| |
| |
| /******************************************************************* |
| * EnumWindows (USER.54) |
| */ |
| BOOL16 WINAPI EnumWindows16( WNDENUMPROC16 func, LPARAM lParam ) |
| { |
| DECL_THUNK( thunk, func, THUNK_CallTo16_word_wl ); |
| return EnumWindows( (WNDENUMPROC)&thunk, lParam ); |
| } |
| |
| |
| /********************************************************************** |
| * EnumChildWindows (USER.55) |
| */ |
| BOOL16 WINAPI EnumChildWindows16( HWND16 parent, WNDENUMPROC16 func, LPARAM lParam ) |
| { |
| DECL_THUNK( thunk, func, THUNK_CallTo16_word_wl ); |
| return EnumChildWindows( WIN_Handle32(parent), (WNDENUMPROC)&thunk, lParam ); |
| } |
| |
| |
| /********************************************************************** |
| * EnumTaskWindows (USER.225) |
| */ |
| BOOL16 WINAPI THUNK_EnumTaskWindows16( HTASK16 hTask, WNDENUMPROC16 func, |
| LPARAM lParam ) |
| { |
| DECL_THUNK( thunk, func, THUNK_CallTo16_word_wl ); |
| return EnumTaskWindows16( hTask, (WNDENUMPROC16)&thunk, lParam ); |
| } |
| |
| |
| /*********************************************************************** |
| * EnumProps (USER.27) |
| */ |
| INT16 WINAPI THUNK_EnumProps16( HWND16 hwnd, PROPENUMPROC16 func ) |
| { |
| DECL_THUNK( thunk, func, THUNK_CallTo16_word_wlw ); |
| return EnumProps16( hwnd, (PROPENUMPROC16)&thunk ); |
| } |
| |
| |
| /*********************************************************************** |
| * GrayString (USER.185) |
| */ |
| BOOL16 WINAPI THUNK_GrayString16( HDC16 hdc, HBRUSH16 hbr, |
| GRAYSTRINGPROC16 func, LPARAM lParam, |
| INT16 cch, INT16 x, INT16 y, |
| INT16 cx, INT16 cy ) |
| { |
| DECL_THUNK( thunk, func, THUNK_CallTo16_word_wlw ); |
| if (!func) |
| return GrayString16( hdc, hbr, NULL, lParam, cch, x, y, cx, cy ); |
| else |
| return GrayString16( hdc, hbr, (GRAYSTRINGPROC16)&thunk, lParam, cch, |
| x, y, cx, cy ); |
| } |
| |
| |
| /********************************************************************** |
| * DrawState (USER.449) |
| */ |
| BOOL16 WINAPI DrawState16( HDC16 hdc, HBRUSH16 hbr, DRAWSTATEPROC16 func, LPARAM ldata, |
| WPARAM16 wdata, INT16 x, INT16 y, INT16 cx, INT16 cy, UINT16 flags ) |
| { |
| UINT opcode = flags & 0xf; |
| DECL_THUNK( thunk, func, THUNK_CallTo16_word_wlwww ); |
| |
| if (opcode == DST_TEXT || opcode == DST_PREFIXTEXT) |
| { |
| /* make sure DrawStateA doesn't try to use ldata as a pointer */ |
| if (!wdata) wdata = strlen( MapSL(ldata) ); |
| if (!cx || !cy) |
| { |
| SIZE s; |
| if (!GetTextExtentPoint32A( hdc, MapSL(ldata), wdata, &s )) return FALSE; |
| if (!cx) cx = s.cx; |
| if (!cy) cy = s.cy; |
| } |
| } |
| return DrawStateA( hdc, hbr, (DRAWSTATEPROC)&thunk, ldata, wdata, x, y, cx, cy, flags ); |
| } |