Commit 7e49205d authored by Alexandre Julliard's avatar Alexandre Julliard

Changed 16-bit USER Enum* functions to not use thunks, now that 16-bit

Winelib is no longer supported.
parent 9ec81d16
*.spec.c
*.spec.glue.s
Makefile Makefile
thunk.glue.c ddeml.spec.c
display.spec.c
keyboard.spec.c
mouse.spec.c
property.glue.c
text.glue.c
user.spec.c
user32.spec.c
wnd16.glue.c
...@@ -27,7 +27,6 @@ C_SRCS = \ ...@@ -27,7 +27,6 @@ C_SRCS = \
property.c \ property.c \
resource.c \ resource.c \
text.c \ text.c \
thunk.c \
user_main.c \ user_main.c \
wnd16.c \ wnd16.c \
wsprintf.c wsprintf.c
...@@ -42,7 +41,9 @@ RC_SRCS16 = \ ...@@ -42,7 +41,9 @@ RC_SRCS16 = \
GLUE = \ GLUE = \
dde/ddeml16.c \ dde/ddeml16.c \
thunk.c property.c \
text.c \
wnd16.c
EXTRA_OBJS = \ EXTRA_OBJS = \
$(TOPOBJDIR)/controls/controls.o \ $(TOPOBJDIR)/controls/controls.o \
......
...@@ -15,6 +15,9 @@ ...@@ -15,6 +15,9 @@
/* size of buffer needed to store an atom string */ /* size of buffer needed to store an atom string */
#define ATOM_BUFFER_SIZE 256 #define ATOM_BUFFER_SIZE 256
/* ### start build ### */
extern WORD CALLBACK PROP_CallTo16_word_wlw(PROPENUMPROC16,WORD,LONG,WORD);
/* ### stop build ### */
/*********************************************************************** /***********************************************************************
* get_properties * get_properties
...@@ -292,10 +295,10 @@ INT16 WINAPI EnumProps16( HWND16 hwnd, PROPENUMPROC16 func ) ...@@ -292,10 +295,10 @@ INT16 WINAPI EnumProps16( HWND16 hwnd, PROPENUMPROC16 func )
if (list[i].string) /* it was a string originally */ if (list[i].string) /* it was a string originally */
{ {
if (!GlobalGetAtomNameA( list[i].atom, string, ATOM_BUFFER_SIZE )) continue; if (!GlobalGetAtomNameA( list[i].atom, string, ATOM_BUFFER_SIZE )) continue;
ret = func( hwnd, SEGPTR_GET(string), list[i].handle ); ret = PROP_CallTo16_word_wlw( func, hwnd, SEGPTR_GET(string), list[i].handle );
} }
else else
ret = func( hwnd, list[i].atom, list[i].handle ); ret = PROP_CallTo16_word_wlw( func, hwnd, list[i].atom, list[i].handle );
if (!ret) break; if (!ret) break;
} }
SEGPTR_FREE( string ); SEGPTR_FREE( string );
......
...@@ -42,6 +42,24 @@ static int tabwidth; ...@@ -42,6 +42,24 @@ static int tabwidth;
static int spacewidth; static int spacewidth;
static int prefix_offset; static int prefix_offset;
/* ### start build ### */
extern WORD CALLBACK TEXT_CallTo16_word_wlw(GRAYSTRINGPROC16,WORD,LONG,WORD);
/* ### stop build ### */
struct gray_string_info
{
GRAYSTRINGPROC16 proc;
LPARAM param;
};
/* callback for 16-bit gray string proc */
static BOOL CALLBACK gray_string_callback( HDC hdc, LPARAM param, INT len )
{
const struct gray_string_info *info = (struct gray_string_info *)param;
return TEXT_CallTo16_word_wlw( info->proc, hdc, info->param, len );
}
/********************************************************************* /*********************************************************************
* Return next line of text from a string. * Return next line of text from a string.
* *
...@@ -585,8 +603,13 @@ BOOL16 WINAPI GrayString16( HDC16 hdc, HBRUSH16 hbr, GRAYSTRINGPROC16 gsprc, ...@@ -585,8 +603,13 @@ BOOL16 WINAPI GrayString16( HDC16 hdc, HBRUSH16 hbr, GRAYSTRINGPROC16 gsprc,
LPARAM lParam, INT16 cch, INT16 x, INT16 y, LPARAM lParam, INT16 cch, INT16 x, INT16 y,
INT16 cx, INT16 cy ) INT16 cx, INT16 cy )
{ {
return TEXT_GrayString(hdc, hbr, (GRAYSTRINGPROC)gsprc, lParam, cch, struct gray_string_info info;
x, y, cx, cy, FALSE, FALSE);
if (!gsprc) return TEXT_GrayString(hdc, hbr, NULL, lParam, cch, x, y, cx, cy, FALSE, FALSE);
info.proc = gsprc;
info.param = lParam;
return TEXT_GrayString( hdc, hbr, gray_string_callback, (LPARAM)&info,
cch, x, y, cx, cy, FALSE, FALSE);
} }
......
/*
* 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 );
}
...@@ -30,7 +30,7 @@ rsrc resources/version16.res ...@@ -30,7 +30,7 @@ rsrc resources/version16.res
24 pascal16 RemoveProp(word ptr) RemoveProp16 24 pascal16 RemoveProp(word ptr) RemoveProp16
25 pascal16 GetProp(word str) GetProp16 25 pascal16 GetProp(word str) GetProp16
26 pascal16 SetProp(word str word) SetProp16 26 pascal16 SetProp(word str word) SetProp16
27 pascal16 EnumProps(word segptr) THUNK_EnumProps16 27 pascal16 EnumProps(word segptr) EnumProps16
28 pascal16 ClientToScreen(word ptr) ClientToScreen16 28 pascal16 ClientToScreen(word ptr) ClientToScreen16
29 pascal16 ScreenToClient(word ptr) ScreenToClient16 29 pascal16 ScreenToClient(word ptr) ScreenToClient16
30 pascal16 WindowFromPoint(long) WindowFromPoint16 30 pascal16 WindowFromPoint(long) WindowFromPoint16
...@@ -189,7 +189,7 @@ rsrc resources/version16.res ...@@ -189,7 +189,7 @@ rsrc resources/version16.res
182 pascal16 KillSystemTimer(word word) KillSystemTimer16 # BEAR182 182 pascal16 KillSystemTimer(word word) KillSystemTimer16 # BEAR182
183 pascal16 GetCaretPos(ptr) GetCaretPos16 183 pascal16 GetCaretPos(ptr) GetCaretPos16
184 stub QuerySendMessage # W1.1, W2.0: SYSHASKANJI 184 stub QuerySendMessage # W1.1, W2.0: SYSHASKANJI
185 pascal16 GrayString(word word segptr segptr s_word s_word s_word s_word s_word) THUNK_GrayString16 185 pascal16 GrayString(word word segptr segptr s_word s_word s_word s_word s_word) GrayString16
186 pascal16 SwapMouseButton(word) SwapMouseButton16 186 pascal16 SwapMouseButton(word) SwapMouseButton16
187 pascal16 EndMenu() EndMenu 187 pascal16 EndMenu() EndMenu
188 pascal16 SetSysModalWindow(word) SetSysModalWindow16 188 pascal16 SetSysModalWindow(word) SetSysModalWindow16
...@@ -231,7 +231,7 @@ rsrc resources/version16.res ...@@ -231,7 +231,7 @@ rsrc resources/version16.res
222 pascal16 GetKeyboardState(ptr) GetKeyboardState 222 pascal16 GetKeyboardState(ptr) GetKeyboardState
223 pascal16 SetKeyboardState(ptr) SetKeyboardState 223 pascal16 SetKeyboardState(ptr) SetKeyboardState
224 pascal16 GetWindowTask(word) GetWindowTask16 224 pascal16 GetWindowTask(word) GetWindowTask16
225 pascal16 EnumTaskWindows(word segptr long) THUNK_EnumTaskWindows16 225 pascal16 EnumTaskWindows(word segptr long) EnumTaskWindows16
226 stub LockInput # not in W2.0 226 stub LockInput # not in W2.0
227 pascal16 GetNextDlgGroupItem(word word word) GetNextDlgGroupItem16 227 pascal16 GetNextDlgGroupItem(word word word) GetNextDlgGroupItem16
228 pascal16 GetNextDlgTabItem(word word word) GetNextDlgTabItem16 228 pascal16 GetNextDlgTabItem(word word word) GetNextDlgTabItem16
...@@ -510,7 +510,7 @@ rsrc resources/version16.res ...@@ -510,7 +510,7 @@ rsrc resources/version16.res
606 pascal16 FormatMessage(long segptr word word ptr word ptr) FormatMessage16 606 pascal16 FormatMessage(long segptr word word ptr word ptr) FormatMessage16
608 pascal16 GetForegroundWindow() GetForegroundWindow16 608 pascal16 GetForegroundWindow() GetForegroundWindow16
609 pascal16 SetForegroundWindow(word) SetForegroundWindow16 609 pascal16 SetForegroundWindow(word) SetForegroundWindow16
610 pascal16 DestroyIcon32(word word) CURSORICON_Destroy 610 pascal16 DestroyIcon32(word word) DestroyIcon32
620 pascal ChangeDisplaySettings(ptr long) ChangeDisplaySettings16 620 pascal ChangeDisplaySettings(ptr long) ChangeDisplaySettings16
621 pascal16 EnumDisplaySettings(str long ptr) EnumDisplaySettings16 621 pascal16 EnumDisplaySettings(str long ptr) EnumDisplaySettings16
640 pascal MsgWaitForMultipleObjects(long ptr long long long) MsgWaitForMultipleObjects16 640 pascal MsgWaitForMultipleObjects(long ptr long long long) MsgWaitForMultipleObjects16
......
...@@ -7,10 +7,28 @@ ...@@ -7,10 +7,28 @@
#include "wine/winuser16.h" #include "wine/winuser16.h"
#include "user.h" #include "user.h"
#include "win.h" #include "win.h"
#include "task.h"
#include "stackframe.h" #include "stackframe.h"
static HWND16 hwndSysModal; static HWND16 hwndSysModal;
/* ### start build ### */
extern WORD CALLBACK WIN_CallTo16_word_wl(WNDENUMPROC16,WORD,LONG);
/* ### stop build ### */
struct wnd_enum_info
{
WNDENUMPROC16 proc;
LPARAM param;
};
/* callback for 16-bit window enumeration functions */
static BOOL CALLBACK wnd_enum_callback( HWND hwnd, LPARAM param )
{
const struct wnd_enum_info *info = (struct wnd_enum_info *)param;
return WIN_CallTo16_word_wl( info->proc, hwnd, info->param );
}
/* convert insert after window handle to 32-bit */ /* convert insert after window handle to 32-bit */
inline static HWND full_insert_after_hwnd( HWND16 hwnd ) inline static HWND full_insert_after_hwnd( HWND16 hwnd )
{ {
...@@ -338,6 +356,32 @@ BOOL16 WINAPI DestroyWindow16( HWND16 hwnd ) ...@@ -338,6 +356,32 @@ BOOL16 WINAPI DestroyWindow16( HWND16 hwnd )
} }
/*******************************************************************
* EnumWindows (USER.54)
*/
BOOL16 WINAPI EnumWindows16( WNDENUMPROC16 func, LPARAM lParam )
{
struct wnd_enum_info info;
info.proc = func;
info.param = lParam;
return EnumWindows( wnd_enum_callback, (LPARAM)&info );
}
/**********************************************************************
* EnumChildWindows (USER.55)
*/
BOOL16 WINAPI EnumChildWindows16( HWND16 parent, WNDENUMPROC16 func, LPARAM lParam )
{
struct wnd_enum_info info;
info.proc = func;
info.param = lParam;
return EnumChildWindows( WIN_Handle32(parent), wnd_enum_callback, (LPARAM)&info );
}
/************************************************************************** /**************************************************************************
* MoveWindow (USER.56) * MoveWindow (USER.56)
*/ */
...@@ -915,6 +959,21 @@ INT16 WINAPI DlgDirListComboBox16( HWND16 hDlg, LPSTR spec, INT16 idCBox, ...@@ -915,6 +959,21 @@ INT16 WINAPI DlgDirListComboBox16( HWND16 hDlg, LPSTR spec, INT16 idCBox,
} }
/**********************************************************************
* EnumTaskWindows (USER.225)
*/
BOOL16 WINAPI EnumTaskWindows16( HTASK16 hTask, WNDENUMPROC16 func, LPARAM lParam )
{
struct wnd_enum_info info;
TDB *tdb = TASK_GetPtr( hTask );
if (!tdb) return FALSE;
info.proc = func;
info.param = lParam;
return EnumThreadWindows( (DWORD)tdb->teb->tid, wnd_enum_callback, (LPARAM)&info );
}
/************************************************************************** /**************************************************************************
* GetNextDlgGroupItem (USER.227) * GetNextDlgGroupItem (USER.227)
*/ */
......
Makefile Makefile
driver.glue.c driver.glue.c
hook.glue.c hook.glue.c
painting.glue.c
...@@ -41,8 +41,10 @@ C_SRCS = \ ...@@ -41,8 +41,10 @@ C_SRCS = \
winpos.c \ winpos.c \
winproc.c winproc.c
GLUE = hook.c \ GLUE = \
driver.c driver.c \
hook.c \
painting.c
all: $(MODULE).o all: $(MODULE).o
......
...@@ -43,6 +43,24 @@ DECLARE_DEBUG_CHANNEL(nonclient); ...@@ -43,6 +43,24 @@ DECLARE_DEBUG_CHANNEL(nonclient);
#define COLOR_MAX COLOR_GRADIENTINACTIVECAPTION #define COLOR_MAX COLOR_GRADIENTINACTIVECAPTION
/* ### start build ### */
extern WORD CALLBACK PAINTING_CallTo16_word_wlwww(DRAWSTATEPROC16,WORD,LONG,WORD,WORD,WORD);
/* ### stop build ### */
struct draw_state_info
{
DRAWSTATEPROC16 proc;
LPARAM param;
};
/* callback for 16-bit DrawState functions */
static BOOL CALLBACK draw_state_callback( HDC hdc, LPARAM lparam, WPARAM wparam, int cx, int cy )
{
const struct draw_state_info *info = (struct draw_state_info *)lparam;
return PAINTING_CallTo16_word_wlwww( info->proc, hdc, info->param, wparam, cx, cy );
}
/*********************************************************************** /***********************************************************************
* add_paint_count * add_paint_count
* *
...@@ -1335,6 +1353,34 @@ BOOL WINAPI DrawStateW(HDC hdc, HBRUSH hbr, ...@@ -1335,6 +1353,34 @@ BOOL WINAPI DrawStateW(HDC hdc, HBRUSH hbr,
return PAINTING_DrawState(hdc, hbr, func, ldata, wdata, x, y, cx, cy, flags, TRUE); return PAINTING_DrawState(hdc, hbr, func, ldata, wdata, x, y, cx, cy, flags, TRUE);
} }
/**********************************************************************
* 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 )
{
struct draw_state_info info;
UINT opcode = flags & 0xf;
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;
}
}
info.proc = func;
info.param = ldata;
return DrawStateA( hdc, hbr, draw_state_callback, (LPARAM)&info, wdata, x, y, cx, cy, flags );
}
/*********************************************************************** /***********************************************************************
* SelectPalette (USER.282) * SelectPalette (USER.282)
*/ */
......
...@@ -2903,18 +2903,6 @@ BOOL WINAPI EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam ) ...@@ -2903,18 +2903,6 @@ BOOL WINAPI EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam )
/********************************************************************** /**********************************************************************
* EnumTaskWindows16 (USER.225)
*/
BOOL16 WINAPI EnumTaskWindows16( HTASK16 hTask, WNDENUMPROC16 func,
LPARAM lParam )
{
TDB *tdb = TASK_GetPtr( hTask );
if (!tdb) return FALSE;
return EnumThreadWindows( (DWORD)tdb->teb->tid, (WNDENUMPROC)func, lParam );
}
/**********************************************************************
* EnumThreadWindows (USER32.@) * EnumThreadWindows (USER32.@)
*/ */
BOOL WINAPI EnumThreadWindows( DWORD id, WNDENUMPROC func, LPARAM lParam ) BOOL WINAPI EnumThreadWindows( DWORD id, WNDENUMPROC func, LPARAM lParam )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment