Replaced most uses of the auto-generated glue code by explicit calls
to WOWCallback16Ex.

diff --git a/objects/metafile.c b/objects/metafile.c
index 1499c37..9fd5f9a 100644
--- a/objects/metafile.c
+++ b/objects/metafile.c
@@ -75,9 +75,6 @@
 #define MFHEADERSIZE (sizeof(METAHEADER))
 #define MFVERSION 0x300
 
-/* ### start build ### */
-extern WORD CALLBACK MF_CallTo16_word_wllwl(MFENUMPROC16,WORD,LONG,LONG,WORD,LONG);
-/* ### stop build ### */
 
 /******************************************************************
  *         MF_AddHandle
@@ -634,6 +631,7 @@
     HPEN hPen;
     HBRUSH hBrush;
     HFONT hFont;
+    WORD args[8];
     BOOL16 result = TRUE, loaded = FALSE;
 
     TRACE("(%p, %04x, %p, %08lx)\n", hdc, hmf, lpEnumFunc, lpData);
@@ -661,20 +659,31 @@
 
     /* loop through metafile records */
 
+    args[7] = hdc16;
+    args[6] = SELECTOROF(spht);
+    args[5] = OFFSETOF(spht);
+    args[4] = seg + (HIWORD(offset) << __AHSHIFT);
+    args[3] = LOWORD(offset);
+    args[2] = mh->mtNoObjects;
+    args[1] = HIWORD(lpData);
+    args[0] = LOWORD(lpData);
+
     while (offset < (mh->mtSize * 2))
     {
+        DWORD ret;
+
 	mr = (METARECORD *)((char *)mh + offset);
 
-        if (!MF_CallTo16_word_wllwl( lpEnumFunc, hdc16, spht,
-                                  MAKESEGPTR( seg + (HIWORD(offset) << __AHSHIFT), LOWORD(offset) ),
-                                     mh->mtNoObjects, (LONG)lpData ))
+        WOWCallback16Ex( (DWORD)lpEnumFunc, WCB16_PASCAL, sizeof(args), args, &ret );
+        if (!LOWORD(ret))
 	{
 	    result = FALSE;
 	    break;
 	}
 
-
 	offset += (mr->rdSize * 2);
+        args[4] = seg + (HIWORD(offset) << __AHSHIFT);
+        args[3] = LOWORD(offset);
     }
 
     SelectObject(hdc, hBrush);