Use MapLS/UnMapLS instead of SEGPTR_* macros.

diff --git a/windows/dialog.c b/windows/dialog.c
index d86b66b..f0d77b6 100644
--- a/windows/dialog.c
+++ b/windows/dialog.c
@@ -42,10 +42,10 @@
     INT16      y;
     INT16      cx;
     INT16      cy;
-    UINT     id;
+    UINT       id;
     LPCSTR     className;
     LPCSTR     windowName;
-    LPVOID     data;
+    LPCVOID    data;
 } DLG_CONTROL_INFO;
 
   /* Dialog template */
@@ -296,26 +296,21 @@
 	p += strlen(p) + 1;
     }
 
-    if (*p)
-    {
-        /* Additional CTLDATA available for this control. */
-        info->data = SEGPTR_ALLOC(*p);
-        memcpy( info->data, p + 1, *p );
-    }
+    if (*p) info->data = p + 1;
     else info->data = NULL;
 
     p += *p + 1;
 
     if(int_id)
-      TRACE("   %s %04x %d, %d, %d, %d, %d, %08lx, %08lx\n", 
+      TRACE("   %s %04x %d, %d, %d, %d, %d, %08lx, %p\n",
 		      info->className,  LOWORD(info->windowName),
 		      info->id, info->x, info->y, info->cx, info->cy,
-		      info->style, (DWORD)SEGPTR_GET(info->data) );
+		      info->style, info->data );
     else
-      TRACE("   %s '%s' %d, %d, %d, %d, %d, %08lx, %08lx\n", 
+      TRACE("   %s '%s' %d, %d, %d, %d, %d, %08lx, %p\n",
 		      info->className,  info->windowName,
 		      info->id, info->x, info->y, info->cx, info->cy,
-		      info->style, (DWORD)SEGPTR_GET(info->data) );
+		      info->style, info->data );
 
     return p;
 }
@@ -414,7 +409,7 @@
             DPRINTF("\n");
             TRACE("  END\n" );
         }
-        info->data = (LPVOID)(p + 1);
+        info->data = p + 1;
         p += GET_WORD(p) / sizeof(WORD);
     }
     else info->data = NULL;
@@ -444,6 +439,8 @@
         if (!win32)
         {
             HINSTANCE16 instance;
+            SEGPTR segptr;
+
             template = DIALOG_GetControl16( template, &info );
             if (HIWORD(info.className) && !strcmp( info.className, "EDIT") &&
                 !(GetWindowLongW( hwnd, GWL_STYLE ) & DS_LOCALEDIT))
@@ -462,6 +459,7 @@
             }
             else instance = (HINSTANCE16)hInst;
 
+            segptr = MapLS( info.data );
             hwndCtrl = WIN_Handle32( CreateWindowEx16( info.exStyle | WS_EX_NOPARENTNOTIFY,
                                                        info.className, info.windowName,
                                                        info.style | WS_CHILD,
@@ -470,9 +468,8 @@
                                                        MulDiv(info.cx, dlgInfo->xBaseUnit, 4),
                                                        MulDiv(info.cy, dlgInfo->yBaseUnit, 8),
                                                        WIN_Handle16(hwnd), (HMENU16)info.id,
-                                                       instance, (LPVOID)SEGPTR_GET(info.data) ));
-
-	    if (info.data) SEGPTR_FREE(info.data);
+                                                       instance, (LPVOID)segptr ));
+            UnMapLS( segptr );
         }
         else
         {
@@ -493,7 +490,7 @@
                                           MulDiv(info.cx, dlgInfo->xBaseUnit, 4),
                                           MulDiv(info.cy, dlgInfo->yBaseUnit, 8),
                                           hwnd, (HMENU)info.id,
-                                          hInst, info.data );
+                                          hInst, (LPVOID)info.data );
         }
         if (!hwndCtrl) return FALSE;