Changed GetProcAddress16 and 16-bit resource functions to take normal
pointers instead of SEGPTRs.
Removed WIN16_GetTempDrive.

diff --git a/controls/menu.c b/controls/menu.c
index 7aa45a9..e8c1153 100644
--- a/controls/menu.c
+++ b/controls/menu.c
@@ -4229,29 +4229,26 @@
 /**********************************************************************
  *	    LoadMenu16    (USER.150)
  */
-HMENU16 WINAPI LoadMenu16( HINSTANCE16 instance, SEGPTR name )
+HMENU16 WINAPI LoadMenu16( HINSTANCE16 instance, LPCSTR name )
 {
     HRSRC16 hRsrc;
     HGLOBAL16 handle;
     HMENU16 hMenu;
 
+    TRACE("(%04x,%s)\n", instance, debugres_a(name) );
+
     if (HIWORD(name))
     {
-        char *str = (char *)PTR_SEG_TO_LIN( name );
-        TRACE("(%04x,'%s')\n", instance, str );
-        if (str[0] == '#') name = (SEGPTR)atoi( str + 1 );
+        if (name[0] == '#') name = (LPCSTR)atoi( name + 1 );
     }
-    else
-        TRACE("(%04x,%04x)\n",instance,LOWORD(name));
 
     if (!name) return 0;
-    
+
     /* check for Win32 module */
-    if (HIWORD(instance))
-        return LoadMenuA(instance,PTR_SEG_TO_LIN(name));
+    if (HIWORD(instance)) return LoadMenuA( instance, name );
     instance = GetExePtr( instance );
 
-    if (!(hRsrc = FindResource16( instance, name, RT_MENU16 ))) return 0;
+    if (!(hRsrc = FindResource16( instance, name, RT_MENUA ))) return 0;
     if (!(handle = LoadResource16( instance, hRsrc ))) return 0;
     hMenu = LoadMenuIndirect16(LockResource16(handle));
     FreeResource16( handle );
diff --git a/dlls/commdlg/colordlg.c b/dlls/commdlg/colordlg.c
index c7fcfb2..a72b0d8 100644
--- a/dlls/commdlg/colordlg.c
+++ b/dlls/commdlg/colordlg.c
@@ -1372,8 +1372,8 @@
     {
         HANDLE16 hResInfo;
         if (!(hResInfo = FindResource16(lpChCol->hInstance,
-                                        lpChCol->lpTemplateName,
-                                        RT_DIALOG16)))
+                                        PTR_SEG_TO_LIN(lpChCol->lpTemplateName),
+                                        RT_DIALOGA)))
         {
             COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
             return FALSE;
@@ -1421,7 +1421,7 @@
         hDlgTmpl16 = hGlobal16;
     }
 
-    ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (SEGPTR) 8);
+    ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 8);
     hInst = GetWindowLongA(lpChCol->hwndOwner, GWL_HINSTANCE);
     bRet = DialogBoxIndirectParam16(hInst, hDlgTmpl16, lpChCol->hwndOwner,
                      (DLGPROC16) ptr, (DWORD)lpChCol);
diff --git a/dlls/commdlg/filedlg.c b/dlls/commdlg/filedlg.c
index caae733..c7208dd 100644
--- a/dlls/commdlg/filedlg.c
+++ b/dlls/commdlg/filedlg.c
@@ -97,12 +97,12 @@
     CURSORICONINFO *fldrInfo;
     
     if (!initialized) {
-	if (!hFolder) hFolder = LoadIcon16(0, MAKEINTRESOURCE16(OIC_FOLDER));
-	if (!hFolder2) hFolder2 = LoadIcon16(0, MAKEINTRESOURCE16(OIC_FOLDER2));
-	if (!hFloppy) hFloppy = LoadIcon16(0, MAKEINTRESOURCE16(OIC_FLOPPY));
-	if (!hHDisk) hHDisk = LoadIcon16(0, MAKEINTRESOURCE16(OIC_HDISK));
-	if (!hCDRom) hCDRom = LoadIcon16(0, MAKEINTRESOURCE16(OIC_CDROM));
-	if (!hNet) hNet = LoadIcon16(0, MAKEINTRESOURCE16(OIC_NETWORK));
+	if (!hFolder) hFolder = LoadIconA(0, MAKEINTRESOURCEA(OIC_FOLDER));
+	if (!hFolder2) hFolder2 = LoadIconA(0, MAKEINTRESOURCEA(OIC_FOLDER2));
+	if (!hFloppy) hFloppy = LoadIconA(0, MAKEINTRESOURCEA(OIC_FLOPPY));
+	if (!hHDisk) hHDisk = LoadIconA(0, MAKEINTRESOURCEA(OIC_HDISK));
+	if (!hCDRom) hCDRom = LoadIconA(0, MAKEINTRESOURCEA(OIC_CDROM));
+	if (!hNet) hNet = LoadIconA(0, MAKEINTRESOURCEA(OIC_NETWORK));
 	if (hFolder == 0 || hFolder2 == 0 || hFloppy == 0 || 
 	    hHDisk == 0 || hCDRom == 0 || hNet == 0)
 	{
@@ -205,8 +205,8 @@
     {
 	HANDLE16 hResInfo;
 	if (!(hResInfo = FindResource16(ofn16->hInstance,
-					ofn16->lpTemplateName,
-                                        RT_DIALOG16)))
+					PTR_SEG_TO_LIN(ofn16->lpTemplateName),
+                                        RT_DIALOGA)))
 	{
 	    COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
 	    return FALSE;
@@ -329,7 +329,7 @@
     /* get the list of spec files */
     GetDlgItemTextW(hWnd, edt1, buffer, sizeof(buffer));
 
-    hCursorWait = LoadCursorA(NULL, IDC_WAITA);
+    hCursorWait = LoadCursorA(0, IDC_WAITA);
     oldCursor = SetCursor(hCursorWait);
 
     /* list of files */
@@ -459,16 +459,18 @@
     }
     if (lpdis->CtlType == ODT_COMBOBOX && lpdis->CtlID == cmb2)
     {
+        char root[] = "a:";
         if (!(str = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC)))
             return FALSE;
 	SendMessageW(lpdis->hwndItem, CB_GETLBTEXT, lpdis->itemID, 
                       (LPARAM)str);
-        switch(DRIVE_GetType( str[2] - 'a' ))
+        root[0] += str[2] - 'a';
+        switch(GetDriveTypeA(root))
         {
-        case TYPE_FLOPPY:  hIcon = hFloppy; break;
-        case TYPE_CDROM:   hIcon = hCDRom; break;
-        case TYPE_NETWORK: hIcon = hNet; break;
-        case TYPE_HD:
+        case DRIVE_REMOVABLE: hIcon = hFloppy; break;
+        case DRIVE_CDROM:     hIcon = hCDRom; break;
+        case DRIVE_REMOTE:    hIcon = hNet; break;
+        case DRIVE_FIXED:
         default:           hIcon = hHDisk; break;
         }
 	if (lpdis->itemState & ODS_SELECTED)
@@ -1482,7 +1484,7 @@
     if (lfs)
     {
         hInst = GetWindowLongA( lpofn->hwndOwner, GWL_HINSTANCE );
-        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (SEGPTR) 6);
+        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 6);
         bRet = DialogBoxIndirectParam16( hInst, lfs->hDlgTmpl16, lpofn->hwndOwner, 
              (DLGPROC16) ptr, (DWORD) lfs);
         FILEDLG_DestroyPrivate(lfs);
@@ -1521,7 +1523,7 @@
     if (lfs)
     {
         hInst = GetWindowLongA( lpofn->hwndOwner, GWL_HINSTANCE );
-        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (SEGPTR) 7);
+        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 7);
         bRet = DialogBoxIndirectParam16( hInst, lfs->hDlgTmpl16, lpofn->hwndOwner, 
              (DLGPROC16) ptr, (DWORD) lfs);
         FILEDLG_DestroyPrivate(lfs);
diff --git a/dlls/commdlg/finddlg.c b/dlls/commdlg/finddlg.c
index e265f7d..3f62f3b 100644
--- a/dlls/commdlg/finddlg.c
+++ b/dlls/commdlg/finddlg.c
@@ -62,8 +62,8 @@
     {
 	HANDLE16 hResInfo;
 	if (!(hResInfo = FindResource16(fr16->hInstance,
-					fr16->lpTemplateName,
-                                        RT_DIALOG16)))
+					PTR_SEG_TO_LIN(fr16->lpTemplateName),
+                                        RT_DIALOGA)))
 	{
 	    COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
 	    return FALSE;
@@ -165,7 +165,7 @@
     if (FINDDLG_Get16BitsTemplate(lfr))
     {
         hInst = GetWindowLongA( lfr->fr16->hwndOwner , GWL_HINSTANCE);
-        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (SEGPTR) 13);
+        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 13);
         ret = CreateDialogIndirectParam16( hInst, lfr->template,
                     lfr->fr16->hwndOwner, (DLGPROC16) ptr, find);
         FINDDLG_FreeResources(lfr);
@@ -195,7 +195,7 @@
     if (FINDDLG_Get16BitsTemplate(lfr))
     {
         hInst = GetWindowLongA( lfr->fr16->hwndOwner , GWL_HINSTANCE);
-        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (SEGPTR) 14);
+        ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 14);
         ret = CreateDialogIndirectParam16( hInst, lfr->template,
                     lfr->fr16->hwndOwner, (DLGPROC16) ptr, find);
 
diff --git a/dlls/commdlg/fontdlg.c b/dlls/commdlg/fontdlg.c
index 44944ed..cd50151 100644
--- a/dlls/commdlg/fontdlg.c
+++ b/dlls/commdlg/fontdlg.c
@@ -92,8 +92,8 @@
     {
         HANDLE16 hResInfo;
         if (!(hResInfo = FindResource16( lpChFont->hInstance,
-                                         lpChFont->lpTemplateName,
-                                         RT_DIALOG16)))
+                                         PTR_SEG_TO_LIN(lpChFont->lpTemplateName),
+                                         RT_DIALOGA)))
         {
             COMDLG32_SetCommDlgExtendedError(CDERR_FINDRESFAILURE);
             return FALSE;
@@ -146,7 +146,7 @@
     lpTemplateName=lpChFont->lpTemplateName;
     lpChFont->lpTemplateName=(SEGPTR)&cf32a;
 
-    ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (SEGPTR) 16);
+    ptr = GetProcAddress16(GetModuleHandle16("COMMDLG"), (LPCSTR) 16);
     hInst = GetWindowLongA(lpChFont->hwndOwner, GWL_HINSTANCE);
     bRet = DialogBoxIndirectParam16(hInst, hDlgTmpl16, lpChFont->hwndOwner,
                      (DLGPROC16) ptr, (DWORD)lpChFont);
@@ -367,9 +367,7 @@
      if (tm.tmWeight==fontstyles[i].weight &&
          tm.tmItalic==fontstyles[i].italic)    /* font successful created ? */
      {
-       char *str = SEGPTR_STRDUP(fontstyles[i].stname);
-       j=SendMessage16(hwnd,CB_ADDSTRING16,0,(LPARAM)SEGPTR_GET(str) );
-       SEGPTR_FREE(str);
+       j=SendMessageA(hwnd,CB_ADDSTRING,0,(LPARAM)fontstyles[i].stname );
        if (j==CB_ERR) return 1;
        j=SendMessage16(hwnd, CB_SETITEMDATA16, j, 
                                  MAKELONG(fontstyles[i].weight,fontstyles[i].italic));
diff --git a/dlls/kernel/kernel.spec b/dlls/kernel/kernel.spec
index 1507f30..4e3f972 100644
--- a/dlls/kernel/kernel.spec
+++ b/dlls/kernel/kernel.spec
@@ -55,7 +55,7 @@
 47  pascal   GetModuleHandle(segstr) WIN16_GetModuleHandle
 48  pascal16 GetModuleUsage(word) GetModuleUsage16
 49  pascal16 GetModuleFileName(word ptr s_word) GetModuleFileName16
-50  pascal GetProcAddress(word segstr) GetProcAddress16
+50  pascal GetProcAddress(word str) GetProcAddress16
 51  pascal MakeProcInstance(segptr word) MakeProcInstance16
 52  pascal16 FreeProcInstance(segptr) FreeProcInstance16
 53  stub CallProcInstance
@@ -98,7 +98,7 @@
 89  pascal   lstrcat(segstr str) lstrcat16
 90  pascal16 lstrlen(str) lstrlen16
 91  register InitTask() InitTask16
-92  pascal   GetTempDrive(word) WIN16_GetTempDrive
+92  pascal   GetTempDrive(word) GetTempDrive
 93  pascal16 GetCodeHandle(segptr) GetCodeHandle16
 94  pascal16 DefineHandleTable(word) DefineHandleTable16
 95  pascal16 LoadLibrary(str) LoadLibrary16
diff --git a/dlls/ole32/ifs.c b/dlls/ole32/ifs.c
index 22a47b2..1a62aba 100644
--- a/dlls/ole32/ifs.c
+++ b/dlls/ole32/ifs.c
@@ -207,7 +207,7 @@
         if (!msegvt16) {
             msegvt16 = SEGPTR_NEW(ICOM_VTABLE(IMalloc16));
 
-#define VTENT(x) msegvt16->fn##x = (void*)WIN32_GetProcAddress16(hcomp,"IMalloc16_"#x);assert(msegvt16->fn##x)
+#define VTENT(x) msegvt16->fn##x = (void*)GetProcAddress16(hcomp,"IMalloc16_"#x);assert(msegvt16->fn##x)
             VTENT(QueryInterface);
             VTENT(AddRef);
             VTENT(Release);
diff --git a/dlls/ole32/storage.c b/dlls/ole32/storage.c
index 62b45bb..ad3dee8 100644
--- a/dlls/ole32/storage.c
+++ b/dlls/ole32/storage.c
@@ -1102,8 +1102,8 @@
 	if (!strvt16.fnQueryInterface) {
 		HMODULE16	wp = GetModuleHandle16("STORAGE");
 		if (wp>=32) {
-		  /* FIXME: what is This WIN32_GetProcAddress16. Should the name be IStream16_QueryInterface of IStream16_fnQueryInterface */
-#define VTENT(xfn)  strvt16.fn##xfn = (void*)WIN32_GetProcAddress16(wp,"IStream16_"#xfn);assert(strvt16.fn##xfn)
+		  /* FIXME: what is This GetProcAddress16. Should the name be IStream16_QueryInterface of IStream16_fnQueryInterface */
+#define VTENT(xfn)  strvt16.fn##xfn = (void*)GetProcAddress16(wp,"IStream16_"#xfn);assert(strvt16.fn##xfn)
 			VTENT(QueryInterface);
 			VTENT(AddRef);
 			VTENT(Release);
@@ -1500,7 +1500,7 @@
 	if (!stvt16.fnQueryInterface) {
 		HMODULE16	wp = GetModuleHandle16("STORAGE");
 		if (wp>=32) {
-#define VTENT(xfn)  stvt16.fn##xfn = (void*)WIN32_GetProcAddress16(wp,"IStorage16_"#xfn);
+#define VTENT(xfn)  stvt16.fn##xfn = (void*)GetProcAddress16(wp,"IStorage16_"#xfn);
 			VTENT(QueryInterface)
 			VTENT(AddRef)
 			VTENT(Release)
diff --git a/dlls/shell32/shell.c b/dlls/shell32/shell.c
index df705c4..bee97f0 100644
--- a/dlls/shell32/shell.c
+++ b/dlls/shell32/shell.c
@@ -641,7 +641,7 @@
 	    *lpiIcon = 6;   /* generic icon - found nothing */
 
 	  GetModuleFileName16(hInst, lpIconPath, 0x80);
-	  hIcon = LoadIcon16( hInst, MAKEINTRESOURCE16(*lpiIcon));
+	  hIcon = LoadIconA( hInst, MAKEINTRESOURCEA(*lpiIcon));
 	}
 	return hIcon;
 }
@@ -803,7 +803,7 @@
         if( !SHELL_hHook )
         { 
             HMODULE16 hShell = GetModuleHandle16( "SHELL" );
-            HOOKPROC16 hookProc = (HOOKPROC16)GetProcAddress16( hShell, (SEGPTR)103 );
+            HOOKPROC16 hookProc = (HOOKPROC16)GetProcAddress16( hShell, (LPCSTR)103 );
             SHELL_hHook = SetWindowsHookEx16( WH_SHELL, hookProc, hShell, 0 );
             if ( SHELL_hHook )
             { 
diff --git a/dlls/user/resource.c b/dlls/user/resource.c
index 8a333ef..0da63f2 100644
--- a/dlls/user/resource.c
+++ b/dlls/user/resource.c
@@ -32,18 +32,13 @@
 /**********************************************************************
  *			LoadAccelerators16	[USER.177]
  */
-HACCEL16 WINAPI LoadAccelerators16(HINSTANCE16 instance, SEGPTR lpTableName)
+HACCEL16 WINAPI LoadAccelerators16(HINSTANCE16 instance, LPCSTR lpTableName)
 {
     HRSRC16	hRsrc;
 
-    if (HIWORD(lpTableName))
-        TRACE_(accel)("%04x '%s'\n",
-                      instance, (char *)PTR_SEG_TO_LIN( lpTableName ) );
-    else
-        TRACE_(accel)("%04x %04x\n",
-                       instance, LOWORD(lpTableName) );
+    TRACE_(accel)("%04x %s\n", instance, debugres_a(lpTableName) );
 
-    if (!(hRsrc = FindResource16( instance, lpTableName, RT_ACCELERATOR16 ))) {
+    if (!(hRsrc = FindResource16( instance, lpTableName, RT_ACCELERATORA ))) {
       WARN_(accel)("couldn't find accelerator table resource\n");
       return 0;
     }
@@ -310,7 +305,7 @@
     TRACE("inst=%04x id=%04x buff=%08x len=%d\n",
           instance, resource_id, (int) buffer, buflen);
 
-    hrsrc = FindResource16( instance, (SEGPTR)((resource_id>>4)+1), RT_STRING16 );
+    hrsrc = FindResource16( instance, (LPCSTR)((resource_id>>4)+1), RT_STRINGA );
     if (!hrsrc) return 0;
     hmem = LoadResource16( instance, hrsrc );
     if (!hmem) return 0;
diff --git a/dlls/user/user.spec b/dlls/user/user.spec
index 5f51c97..bda1a8a 100644
--- a/dlls/user/user.spec
+++ b/dlls/user/user.spec
@@ -89,10 +89,10 @@
 84  pascal16 DrawIcon(word s_word s_word word) DrawIcon16
 85  pascal16 DrawText(word str s_word ptr word) DrawText16
 86  pascal   IconSize() IconSize16 # later versions: BEAR86
-87  pascal16 DialogBox(word segstr word segptr) DialogBox16
+87  pascal16 DialogBox(word str word segptr) DialogBox16
 88  pascal16 EndDialog(word s_word) EndDialog16
-89  pascal16 CreateDialog(word segstr word segptr) CreateDialog16
-90  pascal16 IsDialogMessage(word segptr) WIN16_IsDialogMessage16
+89  pascal16 CreateDialog(word str word segptr) CreateDialog16
+90  pascal16 IsDialogMessage(word segptr) IsDialogMessage16
 91  pascal16 GetDlgItem(word word) GetDlgItem16
 92  pascal16 SetDlgItemText(word word segstr) SetDlgItemText16
 93  pascal16 GetDlgItemText(word word segptr word) GetDlgItemText16
@@ -152,7 +152,7 @@
 147 pascal16 SetClipboardViewer(word) SetClipboardViewer16
 148 pascal16 GetClipboardViewer() GetClipboardViewer16
 149 pascal16 ChangeClipboardChain(word word) ChangeClipboardChain16
-150 pascal16 LoadMenu(word segstr) LoadMenu16
+150 pascal16 LoadMenu(word str) LoadMenu16
 151 pascal16 CreateMenu() CreateMenu16
 152 pascal16 DestroyMenu(word) DestroyMenu16
 153 pascal16 ChangeMenu(word word segstr word word) ChangeMenu16
@@ -175,11 +175,11 @@
 170 pascal16 ArrangeIconicWindows(word) ArrangeIconicWindows16 # W1.1: CREATECONVERTWINDOW, W2.0: nothing !
 171 pascal16 WinHelp(word str word long) WinHelp16 # W1.1: SHOWCONVERTWINDOW, W2.0: nothing !
 172 pascal16 SwitchToThisWindow(word word) SwitchToThisWindow16 # W1.1: SETCONVERTWINDOWHEIGHT, W2.0: nothing !
-173 pascal16 LoadCursor(word segstr) LoadCursor16
-174 pascal16 LoadIcon(word segstr) LoadIcon16
-175 pascal16 LoadBitmap(word segstr) LoadBitmap16
+173 pascal16 LoadCursor(word str) LoadCursor16
+174 pascal16 LoadIcon(word str) LoadIcon16
+175 pascal16 LoadBitmap(word str) LoadBitmap16
 176 pascal16 LoadString(word word ptr s_word) LoadString16
-177 pascal16 LoadAccelerators(word segstr) LoadAccelerators16
+177 pascal16 LoadAccelerators(word str) LoadAccelerators16
 178 pascal16 TranslateAccelerator(word word ptr) TranslateAccelerator16
 179 pascal16 GetSystemMetrics(s_word) GetSystemMetrics16
 180 pascal   GetSysColor(word) GetSysColor16
@@ -243,10 +243,10 @@
 236 pascal16 GetCapture() GetCapture16
 237 pascal16 GetUpdateRgn(word word word) GetUpdateRgn16
 238 pascal16 ExcludeUpdateRgn(word word) ExcludeUpdateRgn16
-239 pascal16 DialogBoxParam(word segstr word segptr long) DialogBoxParam16
+239 pascal16 DialogBoxParam(word str word segptr long) DialogBoxParam16
 240 pascal16 DialogBoxIndirectParam(word word word segptr long)
              DialogBoxIndirectParam16
-241 pascal16 CreateDialogParam(word segstr word segptr long) CreateDialogParam16
+241 pascal16 CreateDialogParam(word str word segptr long) CreateDialogParam16
 242 pascal16 CreateDialogIndirectParam(word ptr word segptr long)
              CreateDialogIndirectParam16
 243 pascal   GetDialogBaseUnits() GetDialogBaseUnits
diff --git a/dlls/winmm/lolvldrv.c b/dlls/winmm/lolvldrv.c
index c29ee36..6161dfa 100644
--- a/dlls/winmm/lolvldrv.c
+++ b/dlls/winmm/lolvldrv.c
@@ -8,6 +8,7 @@
 
 #include <string.h>
 #include <assert.h>
+#include "wine/winbase16.h"
 #include "heap.h"
 #include "user.h"	/* should be removed asap; used in MMDRV_(Get|Alloc|Free) */
 #include "selectors.h"
@@ -2299,7 +2300,7 @@
 	
 	lpDrv->bIs32 = FALSE;
 	if ((hModule = GetDriverModuleHandle16(lpDrv->hDrvr))) {
-#define A(_x,_y)	AA(_x,_y,16,WIN32_GetProcAddress16)
+#define A(_x,_y)	AA(_x,_y,16,GetProcAddress16)
 	    A(MMDRV_AUX,	auxMessage);
 	    A(MMDRV_MIXER,	mixMessage);
 	    A(MMDRV_MIDIIN,	midMessage);
diff --git a/dlls/winmm/mmsystem.c b/dlls/winmm/mmsystem.c
index 8dafea1..6568e8d 100644
--- a/dlls/winmm/mmsystem.c
+++ b/dlls/winmm/mmsystem.c
@@ -5118,7 +5118,7 @@
 	    /* get WINE_mmThreadEntryPoint() 
 	     * 2047 is its ordinal in mmsystem.spec
 	     */
-	    FARPROC16	fp = GetProcAddress16(GetModuleHandle16("MMSYSTEM"), (SEGPTR)2047);
+	    FARPROC16	fp = GetProcAddress16(GetModuleHandle16("MMSYSTEM"), (LPCSTR)2047);
 
 	    TRACE("farproc seg=0x%08lx lin=%p\n", (DWORD)fp, PTR_SEG_TO_LIN(fp));
 
diff --git a/files/directory.c b/files/directory.c
index d1e1d95..4559c3e 100644
--- a/files/directory.c
+++ b/files/directory.c
@@ -221,35 +221,30 @@
 
 /***********************************************************************
  *           GetTempDrive   (KERNEL.92)
+ * A closer look at krnl386.exe shows what the SDK doesn't mention:
+ *
+ * returns:
+ *   AL: driveletter
+ *   AH: ':'		- yes, some kernel code even does stosw with
+ *                            the returned AX.
+ *   DX: 1 for success
  */
-BYTE WINAPI GetTempDrive( BYTE ignored )
+UINT WINAPI GetTempDrive( BYTE ignored )
 {
     char *buffer;
     BYTE ret;
     UINT len = GetTempPathA( 0, NULL );
 
     if (!(buffer = HeapAlloc( GetProcessHeap(), 0, len + 1 )) )
-      return DRIVE_GetCurrentDrive() + 'A';
-
-    /* FIXME: apparently Windows does something with the ignored byte */
-    if (!GetTempPathA( len, buffer )) buffer[0] = 'C';
-    ret = buffer[0];
-    HeapFree( GetProcessHeap(), 0, buffer );
-    return toupper(ret);
-}
-
-
-UINT WINAPI WIN16_GetTempDrive( BYTE ignored )
-{
-    /* A closer look at krnl386.exe shows what the SDK doesn't mention:
-     *
-     * returns:
-     *	 AL: driveletter
-     *   AH: ':'		- yes, some kernel code even does stosw with
-     *                            the returned AX.
-     *   DX: 1 for success
-     */
-    return MAKELONG( GetTempDrive(ignored) | (':' << 8), 1 );
+        ret = DRIVE_GetCurrentDrive() + 'A';
+    else
+    {
+        /* FIXME: apparently Windows does something with the ignored byte */
+        if (!GetTempPathA( len, buffer )) buffer[0] = 'C';
+        ret = toupper(buffer[0]);
+        HeapFree( GetProcessHeap(), 0, buffer );
+    }
+    return MAKELONG( ret | (':' << 8), 1 );
 }
 
 
diff --git a/graphics/win16drv/prtdrv.c b/graphics/win16drv/prtdrv.c
index 4aca0e0..30f4ad1 100644
--- a/graphics/win16drv/prtdrv.c
+++ b/graphics/win16drv/prtdrv.c
@@ -55,7 +55,7 @@
 static void GetPrinterDriverFunctions(HINSTANCE16 hInst, LOADED_PRINTER_DRIVER *pLPD)
 {
 #define LoadPrinterDrvFunc(A) pLPD->fn[FUNC_##A] = \
-      GetProcAddress16(hInst, MAKEINTRESOURCE16(ORD_##A))
+      GetProcAddress16(hInst, MAKEINTRESOURCEA(ORD_##A))
 
       LoadPrinterDrvFunc(BITBLT);
       LoadPrinterDrvFunc(COLORINFO);
diff --git a/if1632/thunk.c b/if1632/thunk.c
index 3a1dbcd..fff50f7 100644
--- a/if1632/thunk.c
+++ b/if1632/thunk.c
@@ -150,7 +150,7 @@
  */
 static FARPROC THUNK_GetCalloutThunk( NE_MODULE *pModule, LPSTR name, RELAY relay )
 {
-    FARPROC16 proc = WIN32_GetProcAddress16( pModule->self, name );
+    FARPROC16 proc = GetProcAddress16( pModule->self, name );
     if ( !proc ) return 0;
 
     if ( pModule->flags & NE_FFLAGS_BUILTIN )
diff --git a/include/wine/winbase16.h b/include/wine/winbase16.h
index a37dfee..ff0f39e 100644
--- a/include/wine/winbase16.h
+++ b/include/wine/winbase16.h
@@ -137,7 +137,7 @@
 VOID        WINAPI FreeLibrary16(HINSTANCE16);
 HANDLE16    WINAPI FindFirstFile16(LPCSTR,LPWIN32_FIND_DATAA);
 BOOL16      WINAPI FindNextFile16(HANDLE16,LPWIN32_FIND_DATAA);
-HRSRC16     WINAPI FindResource16(HINSTANCE16,SEGPTR,SEGPTR);
+HRSRC16     WINAPI FindResource16(HINSTANCE16,LPCSTR,LPCSTR);
 BOOL16      WINAPI FreeModule16(HMODULE16);
 void        WINAPI FreeProcInstance16(FARPROC16);
 BOOL16      WINAPI FreeResource16(HGLOBAL16);
@@ -155,7 +155,7 @@
 WORD        WINAPI GetPrivateProfileSectionNames16(LPSTR,UINT16,LPCSTR);
 INT16       WINAPI GetPrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16,LPCSTR);
 BOOL16      WINAPI GetPrivateProfileStruct16(LPCSTR,LPCSTR,LPVOID,UINT16,LPCSTR);
-FARPROC16   WINAPI GetProcAddress16(HMODULE16,SEGPTR);
+FARPROC16   WINAPI GetProcAddress16(HMODULE16,LPCSTR);
 UINT16      WINAPI GetProfileInt16(LPCSTR,LPCSTR,INT16);
 INT16       WINAPI GetProfileSection16(LPCSTR,LPSTR,UINT16);
 WORD        WINAPI GetProfileSectionNames16(LPSTR,WORD);
@@ -250,8 +250,6 @@
 
 /* Extra functions that don't exist in the Windows API */
 
-HPEN16      WINAPI GetSysColorPen16(INT16);
-UINT      WINAPI WIN16_GetTempDrive(BYTE);
 SEGPTR      WINAPI WIN16_GlobalLock16(HGLOBAL16);
 SEGPTR      WINAPI WIN16_LockResource16(HGLOBAL16);
 LONG        WINAPI WIN16_hread(HFILE16,SEGPTR,LONG);
diff --git a/include/wine/winuser16.h b/include/wine/winuser16.h
index 24de9ee..3f44400 100644
--- a/include/wine/winuser16.h
+++ b/include/wine/winuser16.h
@@ -437,29 +437,6 @@
 #define RT_MESSAGELIST16     MAKEINTRESOURCE16(11)
 #define RT_GROUP_CURSOR16    MAKEINTRESOURCE16(12)
 #define RT_GROUP_ICON16      MAKEINTRESOURCE16(14)
-/* Predefined resources */
-#define IDI_APPLICATION16  MAKEINTRESOURCE16(32512)
-#define IDI_HAND16         MAKEINTRESOURCE16(32513)
-#define IDI_QUESTION16     MAKEINTRESOURCE16(32514)
-#define IDI_EXCLAMATION16  MAKEINTRESOURCE16(32515)
-#define IDI_ASTERISK16     MAKEINTRESOURCE16(32516)
-
-#define IDC_BUMMER16       MAKEINTRESOURCE16(100)
-#define IDC_ARROW16        MAKEINTRESOURCE16(32512)
-#define IDC_IBEAM16        MAKEINTRESOURCE16(32513)
-#define IDC_WAIT16         MAKEINTRESOURCE16(32514)
-#define IDC_CROSS16        MAKEINTRESOURCE16(32515)
-#define IDC_UPARROW16      MAKEINTRESOURCE16(32516)
-#define IDC_SIZE16         MAKEINTRESOURCE16(32640)
-#define IDC_ICON16         MAKEINTRESOURCE16(32641)
-#define IDC_SIZENWSE16     MAKEINTRESOURCE16(32642)
-#define IDC_SIZENESW16     MAKEINTRESOURCE16(32643)
-#define IDC_SIZEWE16       MAKEINTRESOURCE16(32644)
-#define IDC_SIZENS16       MAKEINTRESOURCE16(32645)
-#define IDC_SIZEALL16      MAKEINTRESOURCE16(32646)
-#define IDC_NO16           MAKEINTRESOURCE16(32648)
-#define IDC_APPSTARTING16  MAKEINTRESOURCE16(32650)
-#define IDC_HELP16         MAKEINTRESOURCE16(32651)
 
 /* CreateWindow() coordinates */
 #define CW_USEDEFAULT16 ((INT16)0x8000)
@@ -662,11 +639,11 @@
 INT16       WINAPI CountClipboardFormats16(void);
 VOID        WINAPI CreateCaret16(HWND16,HBITMAP16,INT16,INT16);
 HCURSOR16   WINAPI CreateCursor16(HINSTANCE16,INT16,INT16,INT16,INT16,LPCVOID,LPCVOID);
-HWND16      WINAPI CreateDialog16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16);
+HWND16      WINAPI CreateDialog16(HINSTANCE16,LPCSTR,HWND16,DLGPROC16);
 HWND16      WINAPI CreateDialogIndirect16(HINSTANCE16,LPCVOID,HWND16,DLGPROC16);
 HWND16      WINAPI CreateDialogIndirectParam16(HINSTANCE16,LPCVOID,HWND16,
                                                DLGPROC16,LPARAM);
-HWND16      WINAPI CreateDialogParam16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16,LPARAM);
+HWND16      WINAPI CreateDialogParam16(HINSTANCE16,LPCSTR,HWND16,DLGPROC16,LPARAM);
 HICON16     WINAPI CreateIcon16(HINSTANCE16,INT16,INT16,BYTE,BYTE,LPCVOID,LPCVOID);
 HICON16     WINAPI CreateIconFromResourceEx16(LPBYTE,UINT16,BOOL16,DWORD,INT16,INT16,UINT16);
 HMENU16     WINAPI CreateMenu16(void);
@@ -687,10 +664,10 @@
 BOOL16      WINAPI DestroyIcon16(HICON16);
 BOOL16      WINAPI DestroyMenu16(HMENU16);
 BOOL16      WINAPI DestroyWindow16(HWND16);
-INT16       WINAPI DialogBox16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16);
+INT16       WINAPI DialogBox16(HINSTANCE16,LPCSTR,HWND16,DLGPROC16);
 INT16       WINAPI DialogBoxIndirect16(HINSTANCE16,HANDLE16,HWND16,DLGPROC16);
 INT16       WINAPI DialogBoxIndirectParam16(HINSTANCE16,HANDLE16,HWND16,DLGPROC16,LPARAM);
-INT16       WINAPI DialogBoxParam16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16,LPARAM);
+INT16       WINAPI DialogBoxParam16(HINSTANCE16,LPCSTR,HWND16,DLGPROC16,LPARAM);
 LONG        WINAPI DispatchMessage16(const MSG16*);
 LONG        WINAPI DispatchMessage32_16(const MSG32_16*,BOOL16);
 INT16       WINAPI DlgDirList16(HWND16,LPSTR,INT16,INT16,UINT16);
@@ -829,11 +806,11 @@
 BOOL16      WINAPI IsZoomed16(HWND16);
 BOOL16      WINAPI KillSystemTimer16(HWND16,UINT16);
 BOOL16      WINAPI KillTimer16(HWND16,UINT16);
-HBITMAP16   WINAPI LoadBitmap16(HANDLE16,SEGPTR);
-HCURSOR16   WINAPI LoadCursor16(HINSTANCE16,SEGPTR);
-HICON16     WINAPI LoadIcon16(HINSTANCE16,SEGPTR);
+HBITMAP16   WINAPI LoadBitmap16(HANDLE16,LPCSTR);
+HCURSOR16   WINAPI LoadCursor16(HINSTANCE16,LPCSTR);
+HICON16     WINAPI LoadIcon16(HINSTANCE16,LPCSTR);
 HANDLE16    WINAPI LoadImage16(HINSTANCE16,LPCSTR,UINT16,INT16,INT16,UINT16);
-HMENU16     WINAPI LoadMenu16(HINSTANCE16,SEGPTR);
+HMENU16     WINAPI LoadMenu16(HINSTANCE16,LPCSTR);
 HMENU16     WINAPI LoadMenuIndirect16(LPCVOID);
 INT16       WINAPI LoadString16(HINSTANCE16,UINT16,LPSTR,INT16);
 BOOL16      WINAPI LockWindowUpdate16(HWND16);
@@ -939,7 +916,7 @@
 UINT16      WINAPI WNetAddConnection16(LPCSTR,LPCSTR,LPCSTR);
 INT16       WINAPI wvsprintf16(LPSTR,LPCSTR,LPCVOID);
 BOOL16      WINAPI DrawState16A(HDC16,HBRUSH16,DRAWSTATEPROC16,LPARAM,WPARAM16,INT16,INT16,INT16,INT16,UINT16);
-BOOL16      WINAPI IsDialogMessage16(HWND16,LPMSG16);
+BOOL16      WINAPI IsDialogMessage16(HWND16,SEGPTR);
 INT16       WINAPI GetCommError16(INT16,LPCOMSTAT16);
 BOOL16      WINAPI BuildCommDCB16(LPCSTR,LPDCB16);
 INT16       WINAPI GetCommState16(INT16,LPDCB16);
@@ -960,7 +937,6 @@
                                 INT16,INT16,INT16,INT16,INT16);
 DWORD       WINAPI GetFileResourceSize16(LPCSTR,LPCSTR,LPCSTR,LPDWORD);
 DWORD       WINAPI GetFileResource16(LPCSTR,LPCSTR,LPCSTR,DWORD,DWORD,LPVOID);
-BYTE        WINAPI GetTempDrive(BYTE);
 FARPROC16   WINAPI SetTaskSignalProc(HTASK16,FARPROC16);
 
 
diff --git a/loader/module.c b/loader/module.c
index d2c0fb8..af249b6 100644
--- a/loader/module.c
+++ b/loader/module.c
@@ -1633,9 +1633,6 @@
  */
 FARPROC16 WINAPI WIN32_GetProcAddress16( HMODULE hModule, LPCSTR name )
 {
-    WORD	ordinal;
-    FARPROC16	ret;
-
     if (!hModule) {
     	WARN("hModule may not be 0!\n");
 	return (FARPROC16)0;
@@ -1645,24 +1642,13 @@
     	WARN("hModule is Win32 handle (%08x)\n", hModule );
 	return (FARPROC16)0;
     }
-    hModule = GetExePtr( hModule );
-    if (HIWORD(name)) {
-        ordinal = NE_GetOrdinal( hModule, name );
-        TRACE("%04x '%s'\n", hModule, name );
-    } else {
-        ordinal = LOWORD(name);
-        TRACE("%04x %04x\n", hModule, ordinal );
-    }
-    if (!ordinal) return (FARPROC16)0;
-    ret = NE_GetEntryPoint( hModule, ordinal );
-    TRACE("returning %08x\n",(UINT)ret);
-    return ret;
+    return GetProcAddress16( hModule, name );
 }
 
 /***********************************************************************
  *           GetProcAddress16   (KERNEL.50)
  */
-FARPROC16 WINAPI GetProcAddress16( HMODULE16 hModule, SEGPTR name )
+FARPROC16 WINAPI GetProcAddress16( HMODULE16 hModule, LPCSTR name )
 {
     WORD ordinal;
     FARPROC16 ret;
@@ -1672,8 +1658,8 @@
 
     if (HIWORD(name) != 0)
     {
-        ordinal = NE_GetOrdinal( hModule, (LPSTR)PTR_SEG_TO_LIN(name) );
-        TRACE("%04x '%s'\n", hModule, (LPSTR)PTR_SEG_TO_LIN(name) );
+        ordinal = NE_GetOrdinal( hModule, name );
+        TRACE("%04x '%s'\n", hModule, name );
     }
     else
     {
diff --git a/loader/resource.c b/loader/resource.c
index cec6f6c..20fb275 100644
--- a/loader/resource.c
+++ b/loader/resource.c
@@ -320,12 +320,9 @@
 /**********************************************************************
  *          FindResource16   (KERNEL.60)
  */
-HRSRC16 WINAPI FindResource16( HMODULE16 hModule, SEGPTR name, SEGPTR type )
+HRSRC16 WINAPI FindResource16( HMODULE16 hModule, LPCSTR name, LPCSTR type )
 {
-    LPCSTR nameStr = HIWORD(name)? PTR_SEG_TO_LIN(name) : (LPCSTR)name;
-    LPCSTR typeStr = HIWORD(type)? PTR_SEG_TO_LIN(type) : (LPCSTR)type;
-
-    return RES_FindResource( hModule, typeStr, nameStr, 
+    return RES_FindResource( hModule, type, name,
                     MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), FALSE, TRUE );
 }
 
diff --git a/windows/cursoricon.c b/windows/cursoricon.c
index d6e5e42..f3d4d7f 100644
--- a/windows/cursoricon.c
+++ b/windows/cursoricon.c
@@ -1040,20 +1040,18 @@
 /***********************************************************************
  *           LoadCursor16    (USER.173)
  */
-HCURSOR16 WINAPI LoadCursor16( HINSTANCE16 hInstance, SEGPTR name )
+HCURSOR16 WINAPI LoadCursor16( HINSTANCE16 hInstance, LPCSTR name )
 {
-    LPCSTR nameStr = HIWORD(name)? PTR_SEG_TO_LIN(name) : (LPCSTR)name;
-    return LoadCursorA( hInstance, nameStr );
+    return LoadCursorA( hInstance, name );
 }
 
 
 /***********************************************************************
  *           LoadIcon16    (USER.174)
  */
-HICON16 WINAPI LoadIcon16( HINSTANCE16 hInstance, SEGPTR name )
+HICON16 WINAPI LoadIcon16( HINSTANCE16 hInstance, LPCSTR name )
 {
-    LPCSTR nameStr = HIWORD(name)? PTR_SEG_TO_LIN(name) : (LPCSTR)name;
-    return LoadIconA( hInstance, nameStr );
+    return LoadIconA( hInstance, name );
 }
 
 
@@ -2304,8 +2302,7 @@
 /**********************************************************************
  *	    LoadBitmap16    (USER.175)
  */
-HBITMAP16 WINAPI LoadBitmap16( HINSTANCE16 instance, SEGPTR name )
+HBITMAP16 WINAPI LoadBitmap16( HINSTANCE16 instance, LPCSTR name )
 {
-    LPCSTR nameStr = HIWORD(name)? PTR_SEG_TO_LIN(name) : (LPCSTR)name;
-    return LoadBitmapA( instance, nameStr );
+    return LoadBitmapA( instance, name );
 }
diff --git a/windows/dialog.c b/windows/dialog.c
index 841c449..fa9caaa 100644
--- a/windows/dialog.c
+++ b/windows/dialog.c
@@ -710,12 +710,7 @@
 
     if (template.menuName)
     {
-        if (!win32Template)
-        {
-            LPSTR str = SEGPTR_STRDUP( template.menuName );
-	    hMenu = LoadMenu16( hInst, SEGPTR_GET(str) );
-            SEGPTR_FREE( str );
-	}
+        if (!win32Template) hMenu = LoadMenu16( hInst, template.menuName );
         else hMenu = LoadMenuW( hInst, (LPCWSTR)template.menuName );
     }
 
@@ -891,7 +886,7 @@
 /***********************************************************************
  *           CreateDialog16   (USER.89)
  */
-HWND16 WINAPI CreateDialog16( HINSTANCE16 hInst, SEGPTR dlgTemplate,
+HWND16 WINAPI CreateDialog16( HINSTANCE16 hInst, LPCSTR dlgTemplate,
                               HWND16 owner, DLGPROC16 dlgProc )
 {
     return CreateDialogParam16( hInst, dlgTemplate, owner, dlgProc, 0 );
@@ -901,7 +896,7 @@
 /***********************************************************************
  *           CreateDialogParam16   (USER.241)
  */
-HWND16 WINAPI CreateDialogParam16( HINSTANCE16 hInst, SEGPTR dlgTemplate,
+HWND16 WINAPI CreateDialogParam16( HINSTANCE16 hInst, LPCSTR dlgTemplate,
                                    HWND16 owner, DLGPROC16 dlgProc,
                                    LPARAM param )
 {
@@ -910,10 +905,10 @@
     HGLOBAL16 hmem;
     LPCVOID data;
 
-    TRACE("%04x,%08lx,%04x,%08lx,%ld\n",
-                   hInst, (DWORD)dlgTemplate, owner, (DWORD)dlgProc, param );
+    TRACE("%04x,%s,%04x,%08lx,%ld\n",
+          hInst, debugres_a(dlgTemplate), owner, (DWORD)dlgProc, param );
 
-    if (!(hRsrc = FindResource16( hInst, dlgTemplate, RT_DIALOG16 ))) return 0;
+    if (!(hRsrc = FindResource16( hInst, dlgTemplate, RT_DIALOGA ))) return 0;
     if (!(hmem = LoadResource16( hInst, hRsrc ))) return 0;
     if (!(data = LockResource16( hmem ))) hwnd = 0;
     else hwnd = CreateDialogIndirectParam16( hInst, data, owner,
@@ -1051,7 +1046,7 @@
 /***********************************************************************
  *           DialogBox16   (USER.87)
  */
-INT16 WINAPI DialogBox16( HINSTANCE16 hInst, SEGPTR dlgTemplate,
+INT16 WINAPI DialogBox16( HINSTANCE16 hInst, LPCSTR dlgTemplate,
                           HWND16 owner, DLGPROC16 dlgProc )
 {
     return DialogBoxParam16( hInst, dlgTemplate, owner, dlgProc, 0 );
@@ -1061,7 +1056,7 @@
 /***********************************************************************
  *           DialogBoxParam16   (USER.239)
  */
-INT16 WINAPI DialogBoxParam16( HINSTANCE16 hInst, SEGPTR template,
+INT16 WINAPI DialogBoxParam16( HINSTANCE16 hInst, LPCSTR template,
                                HWND16 owner, DLGPROC16 dlgProc, LPARAM param )
 {
     HWND16 hwnd = 0;
@@ -1070,7 +1065,7 @@
     LPCVOID data;
     int ret = -1;
 
-    if (!(hRsrc = FindResource16( hInst, template, RT_DIALOG16 ))) return 0;
+    if (!(hRsrc = FindResource16( hInst, template, RT_DIALOGA ))) return 0;
     if (!(hmem = LoadResource16( hInst, hRsrc ))) return 0;
     if (!(data = LockResource16( hmem ))) hwnd = 0;
     else hwnd = DIALOG_CreateIndirect( hInst, data, FALSE, owner,
@@ -1480,7 +1475,7 @@
 /***********************************************************************
  *           IsDialogMessage16   (USER.90)
  */
-BOOL16 WINAPI WIN16_IsDialogMessage16( HWND16 hwndDlg, SEGPTR msg16 )
+BOOL16 WINAPI IsDialogMessage16( HWND16 hwndDlg, SEGPTR msg16 )
 {
     LPMSG16 msg = PTR_SEG_TO_LIN(msg16);
     BOOL ret, translate, dispatch;
@@ -1503,17 +1498,6 @@
 }
 
 
-BOOL16 WINAPI IsDialogMessage16( HWND16 hwndDlg, LPMSG16 msg )
-{
-    LPMSG16 msg16 = SEGPTR_NEW(MSG16);
-    BOOL ret;
-
-    *msg16 = *msg;
-    ret = WIN16_IsDialogMessage16( hwndDlg, SEGPTR_GET(msg16) );
-    SEGPTR_FREE(msg16);
-    return ret;
-}
-
 /***********************************************************************
  *           IsDialogMessageA   (USER32.342)
  */
diff --git a/windows/driver.c b/windows/driver.c
index c0e2576..ba3792b 100644
--- a/windows/driver.c
+++ b/windows/driver.c
@@ -739,7 +739,7 @@
     lpSFN = (lpSFN) ? (lpSFN + 1) : lpFileName;
     
     if ((hModule = LoadModule16(lpFileName, (LPVOID)-1)) >= 32) {
-	if ((lpProc = (DRIVERPROC16)WIN32_GetProcAddress16(hModule, "DRIVERPROC")) != NULL) {
+	if ((lpProc = (DRIVERPROC16)GetProcAddress16(hModule, "DRIVERPROC")) != NULL) {
 	    lpDrv = DRIVER_RegisterDriver16(lpSFN, hModule, lpProc, lParam, bCallFrom32);
 	} else {
 	    FreeLibrary16(hModule);
diff --git a/windows/win.c b/windows/win.c
index 33fff0a..57c458e 100644
--- a/windows/win.c
+++ b/windows/win.c
@@ -904,23 +904,17 @@
         if (cs->hMenu) SetMenu(hwnd, cs->hMenu);
         else
         {
-#if 0  /* FIXME: should check if classPtr->menuNameW can be used as is */
-            if (classPtr->menuNameA)
-                cs->hMenu = HIWORD(classPtr->menuNameA) ?
-                       LoadMenu(cs->hInstance,SEGPTR_GET(classPtr->menuNameA)):
-                       LoadMenu(cs->hInstance,(SEGPTR)classPtr->menuNameA);
-#else
-	    SEGPTR menuName = (SEGPTR)GetClassLong16( hwnd, GCL_MENUNAME );
+            /* FIXME: should check if classPtr->menuNameW can be used as is */
+            LPCSTR menuName = (LPCSTR)GetClassLongA( hwnd, GCL_MENUNAME );
             if (menuName)
             {
                 if (HIWORD(cs->hInstance))
-                    cs->hMenu = LoadMenuA(cs->hInstance,PTR_SEG_TO_LIN(menuName));
+                    cs->hMenu = LoadMenuA(cs->hInstance,menuName);
                 else
                     cs->hMenu = LoadMenu16(cs->hInstance,menuName);
 
                 if (cs->hMenu) SetMenu( hwnd, cs->hMenu );
             }
-#endif
         }
     }
     else wndPtr->wIDmenu = (UINT)cs->hMenu;
@@ -3286,7 +3280,7 @@
         return 0L;
     }
 
-    hBummer = LoadCursor16(0, IDC_BUMMER16);
+    hBummer = LoadCursorA(0, IDC_BUMMERA);
 
     if( !hBummer || !wndPtr )
     {