Release 960506

Mon May  6 12:56:26 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [DEVELOPERS-HINTS]
	Added paragraph on naming conventions for Win16/Win32/Winelib.

	* [controls/menu.c]
	Create a default system menu that is the same for all windows
	instead of making a copy every time.

	* [include/wintypes.h]
	Added WINELIB_NAME and DECL_WINELIB_TYPE macros.
	Added xx16 and xx32 definitions for most types. General clean-up.

	* [memory/global.c] [memory/local.c] [*/*]
	Renamed Global and Local heap functions to xxx16. Added all xxx32
	versions of the same functions.

	* [memory/selector.c]
	Mask out lower bits of selector in FreeSelector().

	* [misc/lstr.c]
	Fixed wvsprintf().

	* [windows/class.c]
	Changed the class structure to make Win32 support easier.

	* [windows/defwnd.c]
	Added handling of WM_INITMENUPOPUP for system menu to gray out
	invalid options.

	* [windows/winpos.c]
	Bug fix: the WINDOSPOS structure pointer in WM_NCCALCSIZE must be
	a SEGPTR.

Sun May  5 03:51:26 1996  Huw D. M. Davies <h.davies1@physics.oxford.ac.uk>

	* [memory/local.c]
	Implementation of moveable and (rudimentary) support for
 	discardable local memory, plus several bug fixes.

Sat May  4 18:33:35 1996  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [include/windows.h] [windows/win.c] [if1632/user.spec] 
	FindWindowEx() implemented (someone reported it was missing
	for FrameMaker 4.1).

	* [if1632/kernel32.spec] [if1632/user32.spec] [win32/memory.c]
	  [win32/resource.c]
	Misc small stubs/small functions which bring win95 binaries
	further down the road. (IsBadCodePtr, LocalReAlloc,GetCursorPos)
	Small fix in WIN32_LoadAcceleratorsA.

Fri May  3 19:43:12 1996  Frans van Dorsselaer <dorssel@rulhm1.LeidenUniv.nl>

	* [controls/edit.c] [controls/EDIT.TODO]
	Changed / fixed some types and typecasts.
	Fixed the scrollbar reset after WM_SETHANDLE / WM_SETTEXT.
	Added heap initialization in WM_CREATE.

Fri May  3 19:30:02 1996  Greg Kreider <kreider@natlab.research.philips.com>

	* [controls/combo.c] [controls/listbox.c]
	Pass WM_[HV]SCROLL to listbox, but not combo.
	Don't try to redraw non-existant scroll bars (changes dwStyle flags).
	Combo box gets border.
	Combo box includes button (otherwise button won't trigger dropdown).
	Proper border around RectButton.
	Check size consistancy of combo, listbox, and button after resizing 
	or before painting.  These routines still aren't completely correct.
	Localize size checks in separate routines.
	Listboxes are white.

Thu May  2 19:21:23 1996  Albrecht Kleine  <kleine@ak.sax.de>

	* [controls/combo.c][include/commdlg.h][include/commdlg.c]
	  [resources/sysres_De.rc][resources/sysres_En.rc]
	Introduced ChooseFont dialog, but needed some patches in 
	handling of comboboxes with edit controls.

Tue Apr 30 00:33:27 1996  Ulrich Schmid  <uschmid@mail.hh.provi.de>

	* [programs/winhelp/*]
	Added a help viewer and a simple `.hlp' to `.sgml' converter.

Mon Apr 29 14:17:57 1996  Tristan Tarrant <tst@sthinc.demon.co.uk>

	* [resources/sysres_*.rc] [misc/shell.c]
	Modified size of "About" dialog boxes.

Sat Apr 27 18:10:11 Martin von Loewis <loewis@informatik.hu-berlin.de>

	* [if1632/Makefile.in][loader/builtin.c]
	crtdll.spec, ntdll.spec, wsock32.spec: new files.

	* [loader/pe_image.c]
	Fix error message if import by ordinal failed.
diff --git a/include/mmsystem.h b/include/mmsystem.h
index 0357103..a08d12b 100644
--- a/include/mmsystem.h
+++ b/include/mmsystem.h
@@ -36,8 +36,7 @@
             DWORD songptrpos;   /* song pointer position */
             } midi;
         } u;
-    } MMTIME;
-typedef MMTIME FAR  *LPMMTIME;
+} MMTIME,  *LPMMTIME;
 
 #define TIME_MS         0x0001  /* time in milliseconds */
 #define TIME_SAMPLES    0x0002  /* number of wave samples */
@@ -109,9 +108,7 @@
 #define CALLBACK_TASK       0x00020000l    /* dwCallback is a HTASK */
 #define CALLBACK_FUNCTION   0x00030000l    /* dwCallback is a FARPROC */
 
-typedef void (CALLBACK DRVCALLBACK) (HDRVR h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
-
-typedef DRVCALLBACK FAR *LPDRVCALLBACK;
+typedef void (*LPDRVCALLBACK) (HDRVR h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
 
 #define MM_MICROSOFT            1       /* Microsoft Corp. */
 
@@ -151,13 +148,9 @@
 #define WAVERR_SYNC           (WAVERR_BASE + 3)    /* device is synchronous */
 #define WAVERR_LASTERROR      (WAVERR_BASE + 3)    /* last error in range */
 
-DECLARE_HANDLE(HWAVE);
-DECLARE_HANDLE(HWAVEIN);
-DECLARE_HANDLE(HWAVEOUT);
-typedef HWAVEIN FAR *LPHWAVEIN;
-typedef HWAVEOUT FAR *LPHWAVEOUT;
-typedef DRVCALLBACK WAVECALLBACK;
-typedef WAVECALLBACK FAR *LPWAVECALLBACK;
+typedef HWAVEIN *LPHWAVEIN;
+typedef HWAVEOUT *LPHWAVEOUT;
+typedef LPDRVCALLBACK LPWAVECALLBACK;
 
 #define WOM_OPEN        MM_WOM_OPEN
 #define WOM_CLOSE       MM_WOM_CLOSE
@@ -178,10 +171,9 @@
     DWORD       dwUser;                 /* for client's use */
     DWORD       dwFlags;                /* assorted flags (see defines) */
     DWORD       dwLoops;                /* loop control counter */
-    struct wavehdr_tag FAR *lpNext;     /* reserved for driver */
+    struct wavehdr_tag *lpNext;         /* reserved for driver */
     DWORD       reserved;               /* reserved for driver */
-} WAVEHDR;
-typedef WAVEHDR FAR  *LPWAVEHDR;
+} WAVEHDR, *LPWAVEHDR;
 
 #define WHDR_DONE       0x00000001  /* done bit */
 #define WHDR_PREPARED   0x00000002  /* set if this header has been prepared */
@@ -197,8 +189,7 @@
     DWORD   dwFormats;             /* formats supported */
     UINT    wChannels;             /* number of sources supported */
     DWORD   dwSupport;             /* functionality supported by driver */
-} WAVEOUTCAPS;
-typedef WAVEOUTCAPS FAR  *LPWAVEOUTCAPS;
+} WAVEOUTCAPS, *LPWAVEOUTCAPS;
 
 #define WAVECAPS_PITCH          0x0001   /* supports pitch control */
 #define WAVECAPS_PLAYBACKRATE   0x0002   /* supports playback rate control */
@@ -213,8 +204,7 @@
     char    szPname[MAXPNAMELEN];    /* product name (NULL terminated string) */
     DWORD   dwFormats;               /* formats supported */
     UINT    wChannels;               /* number of channels supported */
-} WAVEINCAPS;
-typedef WAVEINCAPS FAR  *LPWAVEINCAPS;
+} WAVEINCAPS, *LPWAVEINCAPS;
 
 #define WAVE_INVALIDFORMAT     0x00000000       /* invalid format */
 #define WAVE_FORMAT_1M08       0x00000001       /* 11.025 kHz, Mono,   8-bit  */
@@ -237,66 +227,64 @@
     DWORD   nSamplesPerSec WINE_PACKED;		/* sample rate */
     DWORD   nAvgBytesPerSec WINE_PACKED;	/* for buffer estimation */
     WORD    nBlockAlign; 					/* block size of data */
-} WAVEFORMAT;
-typedef WAVEFORMAT FAR  *LPWAVEFORMAT;
+} WAVEFORMAT, *LPWAVEFORMAT;
 
 #define WAVE_FORMAT_PCM     1
 
 typedef struct {
     WAVEFORMAT  wf;
     WORD        wBitsPerSample;
-} PCMWAVEFORMAT;
-typedef PCMWAVEFORMAT FAR  *LPPCMWAVEFORMAT;
+} PCMWAVEFORMAT, *LPPCMWAVEFORMAT;
 
 UINT waveOutGetNumDevs(void);
-UINT waveOutGetDevCaps(UINT uDeviceID, WAVEOUTCAPS FAR* lpCaps,
+UINT waveOutGetDevCaps(UINT uDeviceID, WAVEOUTCAPS * lpCaps,
     UINT uSize);
-UINT waveOutGetVolume(UINT uDeviceID, DWORD FAR* lpdwVolume);
+UINT waveOutGetVolume(UINT uDeviceID, DWORD * lpdwVolume);
 UINT waveOutSetVolume(UINT uDeviceID, DWORD dwVolume);
 UINT waveOutGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
 UINT waveGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
-UINT waveOutOpen(HWAVEOUT FAR* lphWaveOut, UINT uDeviceID,
+UINT waveOutOpen(HWAVEOUT * lphWaveOut, UINT uDeviceID,
     const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
 UINT waveOutClose(HWAVEOUT hWaveOut);
 UINT waveOutPrepareHeader(HWAVEOUT hWaveOut,
-     WAVEHDR FAR* lpWaveOutHdr, UINT uSize);
+     WAVEHDR * lpWaveOutHdr, UINT uSize);
 UINT waveOutUnprepareHeader(HWAVEOUT hWaveOut,
-    WAVEHDR FAR* lpWaveOutHdr, UINT uSize);
-UINT waveOutWrite(HWAVEOUT hWaveOut, WAVEHDR FAR* lpWaveOutHdr,
+    WAVEHDR * lpWaveOutHdr, UINT uSize);
+UINT waveOutWrite(HWAVEOUT hWaveOut, WAVEHDR * lpWaveOutHdr,
     UINT uSize);
 UINT waveOutPause(HWAVEOUT hWaveOut);
 UINT waveOutRestart(HWAVEOUT hWaveOut);
 UINT waveOutReset(HWAVEOUT hWaveOut);
 UINT waveOutBreakLoop(HWAVEOUT hWaveOut);
-UINT waveOutGetPosition(HWAVEOUT hWaveOut, MMTIME FAR* lpInfo,
+UINT waveOutGetPosition(HWAVEOUT hWaveOut, MMTIME * lpInfo,
     UINT uSize);
-UINT waveOutGetPitch(HWAVEOUT hWaveOut, DWORD FAR* lpdwPitch);
+UINT waveOutGetPitch(HWAVEOUT hWaveOut, DWORD * lpdwPitch);
 UINT waveOutSetPitch(HWAVEOUT hWaveOut, DWORD dwPitch);
-UINT waveOutGetPlaybackRate(HWAVEOUT hWaveOut, DWORD FAR* lpdwRate);
+UINT waveOutGetPlaybackRate(HWAVEOUT hWaveOut, DWORD * lpdwRate);
 UINT waveOutSetPlaybackRate(HWAVEOUT hWaveOut, DWORD dwRate);
-UINT waveOutGetID(HWAVEOUT hWaveOut, UINT FAR* lpuDeviceID);
+UINT waveOutGetID(HWAVEOUT hWaveOut, UINT * lpuDeviceID);
 
 DWORD waveOutMessage(HWAVEOUT hWaveOut, UINT uMessage, DWORD dw1, DWORD dw2);
 
 UINT waveInGetNumDevs(void);
-UINT waveInGetDevCaps(UINT uDeviceID, WAVEINCAPS FAR* lpCaps,
+UINT waveInGetDevCaps(UINT uDeviceID, WAVEINCAPS * lpCaps,
     UINT uSize);
 UINT waveInGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
-UINT waveInOpen(HWAVEIN FAR* lphWaveIn, UINT uDeviceID,
+UINT waveInOpen(HWAVEIN * lphWaveIn, UINT uDeviceID,
     const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
 UINT waveInClose(HWAVEIN hWaveIn);
 UINT waveInPrepareHeader(HWAVEIN hWaveIn,
-    WAVEHDR FAR* lpWaveInHdr, UINT uSize);
+    WAVEHDR * lpWaveInHdr, UINT uSize);
 UINT waveInUnprepareHeader(HWAVEIN hWaveIn,
-    WAVEHDR FAR* lpWaveInHdr, UINT uSize);
+    WAVEHDR * lpWaveInHdr, UINT uSize);
 UINT waveInAddBuffer(HWAVEIN hWaveIn,
-    WAVEHDR FAR* lpWaveInHdr, UINT uSize);
+    WAVEHDR * lpWaveInHdr, UINT uSize);
 UINT waveInStart(HWAVEIN hWaveIn);
 UINT waveInStop(HWAVEIN hWaveIn);
 UINT waveInReset(HWAVEIN hWaveIn);
-UINT waveInGetPosition(HWAVEIN hWaveIn, MMTIME FAR* lpInfo,
+UINT waveInGetPosition(HWAVEIN hWaveIn, MMTIME * lpInfo,
     UINT uSize);
-UINT waveInGetID(HWAVEIN hWaveIn, UINT FAR* lpuDeviceID);
+UINT waveInGetID(HWAVEIN hWaveIn, UINT * lpuDeviceID);
 
 DWORD waveInMessage(HWAVEIN hWaveIn, UINT uMessage, DWORD dw1, DWORD dw2);
 
@@ -308,18 +296,14 @@
 #define MIDIERR_INVALIDSETUP  (MIDIERR_BASE + 5)   /* invalid setup */
 #define MIDIERR_LASTERROR     (MIDIERR_BASE + 5)   /* last error in range */
 
-DECLARE_HANDLE(HMIDI);
-DECLARE_HANDLE(HMIDIIN);
-DECLARE_HANDLE(HMIDIOUT);
-typedef HMIDIIN FAR *LPHMIDIIN;
-typedef HMIDIOUT FAR *LPHMIDIOUT;
-typedef DRVCALLBACK MIDICALLBACK;
-typedef MIDICALLBACK FAR *LPMIDICALLBACK;
+typedef HMIDIIN  *LPHMIDIIN;
+typedef HMIDIOUT  *LPHMIDIOUT;
+typedef LPDRVCALLBACK LPMIDICALLBACK;
 #define MIDIPATCHSIZE   128
 typedef WORD PATCHARRAY[MIDIPATCHSIZE];
-typedef WORD FAR *LPPATCHARRAY;
+typedef WORD *LPPATCHARRAY;
 typedef WORD KEYARRAY[MIDIPATCHSIZE];
-typedef WORD FAR *LPKEYARRAY;
+typedef WORD *LPKEYARRAY;
 
 #define MIM_OPEN        MM_MIM_OPEN
 #define MIM_CLOSE       MM_MIM_CLOSE
@@ -352,8 +336,7 @@
     UINT    wNotes;                /* max # of notes (internal synth only) */
     UINT    wChannelMask;          /* channels used (internal synth only) */
     DWORD   dwSupport;             /* functionality supported by driver */
-} MIDIOUTCAPS;
-typedef MIDIOUTCAPS FAR  *LPMIDIOUTCAPS;
+} MIDIOUTCAPS, *LPMIDIOUTCAPS;
 
 #define MOD_MIDIPORT    1  /* output port */
 #define MOD_SYNTH       2  /* generic internal synth */
@@ -370,8 +353,7 @@
     UINT    wPid;                  /* product ID */
     VERSION vDriverVersion;        /* version of the driver */
     char    szPname[MAXPNAMELEN];  /* product name (NULL terminated string) */
-} MIDIINCAPS;
-typedef MIDIINCAPS FAR  *LPMIDIINCAPS;
+} MIDIINCAPS, *LPMIDIINCAPS;
 
 typedef struct {
     LPSTR       lpData;               /* pointer to locked data block */
@@ -379,10 +361,9 @@
     DWORD       dwBytesRecorded;      /* used for input only */
     DWORD       dwUser;               /* for client's use */
     DWORD       dwFlags;              /* assorted flags (see defines) */
-    struct midihdr_tag FAR *lpNext;   /* reserved for driver */
+    struct midihdr_tag *lpNext;       /* reserved for driver */
     DWORD       reserved;             /* reserved for driver */
-} MIDIHDR;
-typedef MIDIHDR FAR  *LPMIDIHDR;
+} MIDIHDR, *LPMIDIHDR;
 
 #define MHDR_DONE       0x00000001       /* done bit */
 #define MHDR_PREPARED   0x00000002       /* set if header prepared */
@@ -390,27 +371,27 @@
 
 UINT midiOutGetNumDevs(void);
 UINT midiOutGetDevCaps(UINT uDeviceID,
-    MIDIOUTCAPS FAR* lpCaps, UINT uSize);
-UINT midiOutGetVolume(UINT uDeviceID, DWORD FAR* lpdwVolume);
+    MIDIOUTCAPS * lpCaps, UINT uSize);
+UINT midiOutGetVolume(UINT uDeviceID, DWORD * lpdwVolume);
 UINT midiOutSetVolume(UINT uDeviceID, DWORD dwVolume);
 UINT midiOutGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
 UINT midiGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
-UINT midiOutOpen(HMIDIOUT FAR* lphMidiOut, UINT uDeviceID,
+UINT midiOutOpen(HMIDIOUT * lphMidiOut, UINT uDeviceID,
     DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
 UINT midiOutClose(HMIDIOUT hMidiOut);
 UINT midiOutPrepareHeader(HMIDIOUT hMidiOut,
-    MIDIHDR FAR* lpMidiOutHdr, UINT uSize);
+    MIDIHDR * lpMidiOutHdr, UINT uSize);
 UINT midiOutUnprepareHeader(HMIDIOUT hMidiOut,
-    MIDIHDR FAR* lpMidiOutHdr, UINT uSize);
+    MIDIHDR * lpMidiOutHdr, UINT uSize);
 UINT midiOutShortMsg(HMIDIOUT hMidiOut, DWORD dwMsg);
 UINT midiOutLongMsg(HMIDIOUT hMidiOut,
-    MIDIHDR FAR* lpMidiOutHdr, UINT uSize);
+    MIDIHDR * lpMidiOutHdr, UINT uSize);
 UINT midiOutReset(HMIDIOUT hMidiOut);
 UINT midiOutCachePatches(HMIDIOUT hMidiOut,
-    UINT uBank, WORD FAR* lpwPatchArray, UINT uFlags);
+    UINT uBank, WORD * lpwPatchArray, UINT uFlags);
 UINT midiOutCacheDrumPatches(HMIDIOUT hMidiOut,
-    UINT uPatch, WORD FAR* lpwKeyArray, UINT uFlags);
-UINT midiOutGetID(HMIDIOUT hMidiOut, UINT FAR* lpuDeviceID);
+    UINT uPatch, WORD * lpwKeyArray, UINT uFlags);
+UINT midiOutGetID(HMIDIOUT hMidiOut, UINT * lpuDeviceID);
 
 DWORD midiOutMessage(HMIDIOUT hMidiOut, UINT uMessage, DWORD dw1, DWORD dw2);
 
@@ -418,19 +399,19 @@
 UINT midiInGetDevCaps(UINT uDeviceID,
     LPMIDIINCAPS lpCaps, UINT uSize);
 UINT midiInGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
-UINT midiInOpen(HMIDIIN FAR* lphMidiIn, UINT uDeviceID,
+UINT midiInOpen(HMIDIIN * lphMidiIn, UINT uDeviceID,
     DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
 UINT midiInClose(HMIDIIN hMidiIn);
 UINT midiInPrepareHeader(HMIDIIN hMidiIn,
-    MIDIHDR FAR* lpMidiInHdr, UINT uSize);
+    MIDIHDR * lpMidiInHdr, UINT uSize);
 UINT midiInUnprepareHeader(HMIDIIN hMidiIn,
-    MIDIHDR FAR* lpMidiInHdr, UINT uSize);
+    MIDIHDR * lpMidiInHdr, UINT uSize);
 UINT midiInAddBuffer(HMIDIIN hMidiIn,
-    MIDIHDR FAR* lpMidiInHdr, UINT uSize);
+    MIDIHDR * lpMidiInHdr, UINT uSize);
 UINT midiInStart(HMIDIIN hMidiIn);
 UINT midiInStop(HMIDIIN hMidiIn);
 UINT midiInReset(HMIDIIN hMidiIn);
-UINT midiInGetID(HMIDIIN hMidiIn, UINT FAR* lpuDeviceID);
+UINT midiInGetID(HMIDIIN hMidiIn, UINT * lpuDeviceID);
 
 DWORD midiInMessage(HMIDIIN hMidiIn, UINT uMessage, DWORD dw1, DWORD dw2);
 
@@ -443,8 +424,7 @@
     char    szPname[MAXPNAMELEN];  /* product name (NULL terminated string) */
     UINT    wTechnology;           /* type of device */
     DWORD   dwSupport;             /* functionality supported by driver */
-} AUXCAPS;
-typedef AUXCAPS FAR  *LPAUXCAPS;
+} AUXCAPS, *LPAUXCAPS;
 
 #define AUXCAPS_CDAUDIO    1       /* audio from internal CD-ROM drive */
 #define AUXCAPS_AUXIN      2       /* audio from auxiliary input jacks */
@@ -453,9 +433,9 @@
 #define AUXCAPS_LRVOLUME        0x0002  /* separate left-right volume control */
 
 UINT auxGetNumDevs(void);
-UINT auxGetDevCaps(UINT uDeviceID, AUXCAPS FAR* lpCaps, UINT uSize);
+UINT auxGetDevCaps(UINT uDeviceID, AUXCAPS * lpCaps, UINT uSize);
 UINT auxSetVolume(UINT uDeviceID, DWORD dwVolume);
-UINT auxGetVolume(UINT uDeviceID, DWORD FAR* lpdwVolume);
+UINT auxGetVolume(UINT uDeviceID, DWORD * lpdwVolume);
 
 DWORD auxOutMessage(UINT uDeviceID, UINT uMessage, DWORD dw1, DWORD dw2);
 
@@ -463,9 +443,7 @@
 #define TIMERR_NOCANDO        (TIMERR_BASE+1)      /* request not completed */
 #define TIMERR_STRUCT         (TIMERR_BASE+33)     /* time struct size */
 
-typedef void (CALLBACK TIMECALLBACK) (UINT uTimerID, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
-
-typedef TIMECALLBACK FAR *LPTIMECALLBACK;
+typedef void (*LPTIMECALLBACK) (UINT uTimerID, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
 
 #define TIME_ONESHOT    0   /* program timer for single event */
 #define TIME_PERIODIC   1   /* program for continuous periodic event */
@@ -473,15 +451,14 @@
 typedef struct {
     UINT    wPeriodMin;     /* minimum period supported  */
     UINT    wPeriodMax;     /* maximum period supported  */
-    } TIMECAPS;
-typedef TIMECAPS FAR  *LPTIMECAPS;
+} TIMECAPS, *LPTIMECAPS;
 
-UINT timeGetSystemTime(MMTIME FAR* lpTime, UINT uSize);
+UINT timeGetSystemTime(MMTIME * lpTime, UINT uSize);
 DWORD timeGetTime(void);
 UINT timeSetEvent(UINT uDelay, UINT uResolution,
     LPTIMECALLBACK lpFunction, DWORD dwUser, UINT uFlags);
 UINT timeKillEvent(UINT uTimerID);
-UINT timeGetDevCaps(TIMECAPS FAR* lpTimeCaps, UINT uSize);
+UINT timeGetDevCaps(TIMECAPS * lpTimeCaps, UINT uSize);
 UINT timeBeginPeriod(UINT uPeriod);
 UINT timeEndPeriod(UINT uPeriod);
 
@@ -515,21 +492,19 @@
     UINT wNumButtons;           /* number of buttons */
     UINT wPeriodMin;            /* minimum message period when captured */
     UINT wPeriodMax;            /* maximum message period when captured */
-    } JOYCAPS;
-typedef JOYCAPS FAR  *LPJOYCAPS;
+} JOYCAPS, *LPJOYCAPS;
 
 typedef struct {
     UINT wXpos;                 /* x position */
     UINT wYpos;                 /* y position */
     UINT wZpos;                 /* z position */
     UINT wButtons;              /* button states */
-    } JOYINFO;
-typedef JOYINFO FAR  *LPJOYINFO;
+} JOYINFO, *LPJOYINFO;
 
-UINT joyGetDevCaps(UINT uJoyID, JOYCAPS FAR* lpCaps, UINT uSize);
+UINT joyGetDevCaps(UINT uJoyID, JOYCAPS * lpCaps, UINT uSize);
 UINT joyGetNumDevs(void);
-UINT joyGetPos(UINT uJoyID, JOYINFO FAR* lpInfo);
-UINT joyGetThreshold(UINT uJoyID, UINT FAR* lpuThreshold);
+UINT joyGetPos(UINT uJoyID, JOYINFO * lpInfo);
+UINT joyGetThreshold(UINT uJoyID, UINT * lpuThreshold);
 UINT joyReleaseCapture(UINT uJoyID);
 UINT joySetCapture(HWND hwnd, UINT uJoyID, UINT uPeriod,
     BOOL bChanged);
@@ -550,10 +525,8 @@
 #define CFSEPCHAR       '+'             /* compound file name separator char. */
 
 typedef DWORD           FOURCC;         /* a four character code */
-DECLARE_HANDLE(HMMIO);                  /* a handle to an open file */
-typedef LONG (CALLBACK MMIOPROC)(LPSTR lpmmioinfo, UINT uMessage,
+typedef LONG (*LPMMIOPROC)(LPSTR lpmmioinfo, UINT uMessage,
             LPARAM lParam1, LPARAM lParam2);
-typedef MMIOPROC FAR *LPMMIOPROC;
 
 typedef struct {
         DWORD           dwFlags;        /* general status flags */
@@ -575,8 +548,7 @@
         DWORD           dwReserved1;    /* reserved for MMIO use */
         DWORD           dwReserved2;    /* reserved for MMIO use */
         HMMIO           hmmio;          /* handle to open file */
-} MMIOINFO;
-typedef MMIOINFO FAR  *LPMMIOINFO;
+} MMIOINFO, *LPMMIOINFO;
 
 typedef struct _MMCKINFO
 {
@@ -585,8 +557,7 @@
         FOURCC          fccType;        /* form type or list type */
         DWORD           dwDataOffset;   /* offset of data portion of chunk */
         DWORD           dwFlags;        /* flags used by MMIO functions */
-} MMCKINFO;
-typedef MMCKINFO FAR  *LPMMCKINFO;
+} MMCKINFO, *LPMMCKINFO;
 
 #define MMIO_RWMODE     0x00000003      /* open file for reading/writing/both */
 #define MMIO_SHAREMODE  0x00000070      /* file sharing mode number */
@@ -653,30 +624,30 @@
 FOURCC mmioStringToFOURCC(LPCSTR sz, UINT uFlags);
 LPMMIOPROC mmioInstallIOProc(FOURCC fccIOProc, LPMMIOPROC pIOProc,
     DWORD dwFlags);
-HMMIO mmioOpen(LPSTR szFileName, MMIOINFO FAR* lpmmioinfo,
+HMMIO mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo,
     DWORD dwOpenFlags);
 
 UINT mmioRename(LPCSTR szFileName, LPCSTR szNewFileName,
-     MMIOINFO FAR* lpmmioinfo, DWORD dwRenameFlags);
+     MMIOINFO * lpmmioinfo, DWORD dwRenameFlags);
 
 UINT mmioClose(HMMIO hmmio, UINT uFlags);
 LONG mmioRead(HMMIO hmmio, HPSTR pch, LONG cch);
 LONG mmioWrite(HMMIO hmmio, HPCSTR pch, LONG cch);
 LONG mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin);
-UINT mmioGetInfo(HMMIO hmmio, MMIOINFO FAR* lpmmioinfo, UINT uFlags);
-UINT mmioSetInfo(HMMIO hmmio, const MMIOINFO FAR* lpmmioinfo, UINT uFlags);
+UINT mmioGetInfo(HMMIO hmmio, MMIOINFO * lpmmioinfo, UINT uFlags);
+UINT mmioSetInfo(HMMIO hmmio, const MMIOINFO * lpmmioinfo, UINT uFlags);
 UINT mmioSetBuffer(HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer,
     UINT uFlags);
 UINT mmioFlush(HMMIO hmmio, UINT uFlags);
-UINT mmioAdvance(HMMIO hmmio, MMIOINFO FAR* lpmmioinfo, UINT uFlags);
+UINT mmioAdvance(HMMIO hmmio, MMIOINFO * lpmmioinfo, UINT uFlags);
 LONG mmioSendMessage(HMMIO hmmio, UINT uMessage,
     LPARAM lParam1, LPARAM lParam2);
-UINT mmioDescend(HMMIO hmmio, MMCKINFO FAR* lpck,
-    const MMCKINFO FAR* lpckParent, UINT uFlags);
-UINT mmioAscend(HMMIO hmmio, MMCKINFO FAR* lpck, UINT uFlags);
-UINT mmioCreateChunk(HMMIO hmmio, MMCKINFO FAR* lpck, UINT uFlags);
+UINT mmioDescend(HMMIO hmmio, MMCKINFO * lpck,
+    const MMCKINFO * lpckParent, UINT uFlags);
+UINT mmioAscend(HMMIO hmmio, MMCKINFO * lpck, UINT uFlags);
+UINT mmioCreateChunk(HMMIO hmmio, MMCKINFO * lpck, UINT uFlags);
 
-typedef UINT (CALLBACK *YIELDPROC) (UINT uDeviceID, DWORD dwYieldData);
+typedef UINT (*YIELDPROC) (UINT uDeviceID, DWORD dwYieldData);
 
 DWORD mciSendCommand (UINT uDeviceID, UINT uMessage,
     DWORD dwParam1, DWORD dwParam2);
@@ -691,7 +662,7 @@
     DWORD dwYieldData);
 
 HTASK mciGetCreatorTask(UINT uDeviceID);
-YIELDPROC mciGetYieldProc (UINT uDeviceID, DWORD FAR* lpdwYieldData);
+YIELDPROC mciGetYieldProc (UINT uDeviceID, DWORD * lpdwYieldData);
 
 #define MCIERR_INVALID_DEVICE_ID        (MCIERR_BASE + 1)
 #define MCIERR_UNRECOGNIZED_KEYWORD     (MCIERR_BASE + 3)
@@ -953,8 +924,7 @@
 
 typedef struct {
 	DWORD   dwCallback;
-	} MCI_GENERIC_PARMS;
-typedef MCI_GENERIC_PARMS FAR *LPMCI_GENERIC_PARMS;
+} MCI_GENERIC_PARMS, *LPMCI_GENERIC_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
@@ -963,43 +933,37 @@
 	LPCSTR  lpstrDeviceType;
 	LPCSTR  lpstrElementName;
 	LPCSTR  lpstrAlias;
-	} MCI_OPEN_PARMS;
-typedef MCI_OPEN_PARMS FAR *LPMCI_OPEN_PARMS;
+} MCI_OPEN_PARMS, *LPMCI_OPEN_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	DWORD   dwFrom;
 	DWORD   dwTo;
-	} MCI_PLAY_PARMS;
-typedef MCI_PLAY_PARMS FAR *LPMCI_PLAY_PARMS;
+} MCI_PLAY_PARMS, *LPMCI_PLAY_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	DWORD   dwTo;
-	} MCI_SEEK_PARMS;
-typedef MCI_SEEK_PARMS FAR *LPMCI_SEEK_PARMS;
+} MCI_SEEK_PARMS, *LPMCI_SEEK_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	DWORD   dwReturn;
 	DWORD   dwItem;
 	DWORD   dwTrack;
-	} MCI_STATUS_PARMS;
-typedef MCI_STATUS_PARMS FAR * LPMCI_STATUS_PARMS;
+} MCI_STATUS_PARMS, *LPMCI_STATUS_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	LPSTR   lpstrReturn;
 	DWORD   dwRetSize;
-	} MCI_INFO_PARMS;
-typedef MCI_INFO_PARMS FAR * LPMCI_INFO_PARMS;
+} MCI_INFO_PARMS, *LPMCI_INFO_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	DWORD   dwReturn;
 	DWORD   dwItem;
-	} MCI_GETDEVCAPS_PARMS;
-typedef MCI_GETDEVCAPS_PARMS FAR * LPMCI_GETDEVCAPS_PARMS;
+} MCI_GETDEVCAPS_PARMS, *LPMCI_GETDEVCAPS_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
@@ -1008,15 +972,13 @@
 	DWORD   dwNumber;
 	UINT    wDeviceType;
 	UINT    wReserved0;
-	} MCI_SYSINFO_PARMS;
-typedef MCI_SYSINFO_PARMS FAR * LPMCI_SYSINFO_PARMS;
+} MCI_SYSINFO_PARMS, *LPMCI_SYSINFO_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	DWORD   dwTimeFormat;
 	DWORD   dwAudio;
-	} MCI_SET_PARMS;
-typedef MCI_SET_PARMS FAR *LPMCI_SET_PARMS;
+} MCI_SET_PARMS, *LPMCI_SET_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
@@ -1024,33 +986,28 @@
 	UINT    wReserved0;
 	HWND    hwndBreak;
 	UINT    wReserved1;
-	} MCI_BREAK_PARMS;
-typedef MCI_BREAK_PARMS FAR * LPMCI_BREAK_PARMS;
+} MCI_BREAK_PARMS, *LPMCI_BREAK_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	LPCSTR  lpstrSoundName;
-	} MCI_SOUND_PARMS;
-typedef MCI_SOUND_PARMS FAR * LPMCI_SOUND_PARMS;
+} MCI_SOUND_PARMS, *LPMCI_SOUND_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	LPCSTR  lpfilename;
-	} MCI_SAVE_PARMS;
-typedef MCI_SAVE_PARMS FAR * LPMCI_SAVE_PARMS;
+} MCI_SAVE_PARMS, *LPMCI_SAVE_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	LPCSTR  lpfilename;
-	} MCI_LOAD_PARMS;
-typedef MCI_LOAD_PARMS FAR * LPMCI_LOAD_PARMS;
+} MCI_LOAD_PARMS, *LPMCI_LOAD_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	DWORD   dwFrom;
 	DWORD   dwTo;
-	} MCI_RECORD_PARMS;
-typedef MCI_RECORD_PARMS FAR *LPMCI_RECORD_PARMS;
+} MCI_RECORD_PARMS, *LPMCI_RECORD_PARMS;
 
 #define MCI_VD_MODE_PARK                (MCI_VD_OFFSET + 1)
 
@@ -1095,20 +1052,17 @@
 	DWORD   dwFrom;
 	DWORD   dwTo;
 	DWORD   dwSpeed;
-	} MCI_VD_PLAY_PARMS;
-typedef MCI_VD_PLAY_PARMS FAR *LPMCI_VD_PLAY_PARMS;
+} MCI_VD_PLAY_PARMS, *LPMCI_VD_PLAY_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	DWORD   dwFrames;
-	} MCI_VD_STEP_PARMS;
-typedef MCI_VD_STEP_PARMS FAR *LPMCI_VD_STEP_PARMS;
+} MCI_VD_STEP_PARMS, *LPMCI_VD_STEP_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	LPCSTR  lpstrCommand;
-	} MCI_VD_ESCAPE_PARMS;
-typedef MCI_VD_ESCAPE_PARMS FAR *LPMCI_VD_ESCAPE_PARMS;
+} MCI_VD_ESCAPE_PARMS, *LPMCI_VD_ESCAPE_PARMS;
 
 #define MCI_WAVE_OPEN_BUFFER            0x00010000L
 
@@ -1144,15 +1098,13 @@
 	LPCSTR  lpstrElementName;
 	LPCSTR  lpstrAlias;
 	DWORD   dwBufferSeconds;
-	} MCI_WAVE_OPEN_PARMS;
-typedef MCI_WAVE_OPEN_PARMS FAR *LPMCI_WAVE_OPEN_PARMS;
+} MCI_WAVE_OPEN_PARMS, *LPMCI_WAVE_OPEN_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	DWORD   dwFrom;
 	DWORD   dwTo;
-	} MCI_WAVE_DELETE_PARMS;
-typedef MCI_WAVE_DELETE_PARMS FAR *LPMCI_WAVE_DELETE_PARMS;
+} MCI_WAVE_DELETE_PARMS, *LPMCI_WAVE_DELETE_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
@@ -1172,8 +1124,7 @@
 	UINT    wReserved4;
 	UINT    wBitsPerSample;
 	UINT    wReserved5;
-	} MCI_WAVE_SET_PARMS;
-typedef MCI_WAVE_SET_PARMS FAR * LPMCI_WAVE_SET_PARMS;
+} MCI_WAVE_SET_PARMS, * LPMCI_WAVE_SET_PARMS;
 
 #define     MCI_SEQ_DIV_PPQN            (0 + MCI_SEQ_OFFSET)
 #define     MCI_SEQ_DIV_SMPTE_24        (1 + MCI_SEQ_OFFSET)
@@ -1209,8 +1160,7 @@
 	DWORD   dwSlave;
 	DWORD   dwMaster;
 	DWORD   dwOffset;
-	} MCI_SEQ_SET_PARMS;
-typedef MCI_SEQ_SET_PARMS FAR * LPMCI_SEQ_SET_PARMS;
+} MCI_SEQ_SET_PARMS, *LPMCI_SEQ_SET_PARMS;
 
 #define MCI_ANIM_OPEN_WS                0x00010000L
 #define MCI_ANIM_OPEN_PARENT            0x00020000L
@@ -1271,22 +1221,19 @@
 	DWORD   dwStyle;
 	HWND    hWndParent;
 	UINT    wReserved1;
-	} MCI_ANIM_OPEN_PARMS;
-typedef MCI_ANIM_OPEN_PARMS FAR *LPMCI_ANIM_OPEN_PARMS;
+} MCI_ANIM_OPEN_PARMS, *LPMCI_ANIM_OPEN_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	DWORD   dwFrom;
 	DWORD   dwTo;
 	DWORD   dwSpeed;
-	} MCI_ANIM_PLAY_PARMS;
-typedef MCI_ANIM_PLAY_PARMS FAR *LPMCI_ANIM_PLAY_PARMS;
+} MCI_ANIM_PLAY_PARMS, *LPMCI_ANIM_PLAY_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	DWORD   dwFrames;
-	} MCI_ANIM_STEP_PARMS;
-typedef MCI_ANIM_STEP_PARMS FAR *LPMCI_ANIM_STEP_PARMS;
+} MCI_ANIM_STEP_PARMS, *LPMCI_ANIM_STEP_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
@@ -1295,8 +1242,7 @@
 	UINT    nCmdShow;
 	UINT    wReserved2;
 	LPCSTR  lpstrText;
-	} MCI_ANIM_WINDOW_PARMS;
-typedef MCI_ANIM_WINDOW_PARMS FAR * LPMCI_ANIM_WINDOW_PARMS;
+} MCI_ANIM_WINDOW_PARMS, *LPMCI_ANIM_WINDOW_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
@@ -1306,15 +1252,13 @@
 #else   /* ifdef MCI_USE_OFFEXT */
 	RECT    rc;
 #endif  /* ifdef MCI_USE_OFFEXT */
-	} MCI_ANIM_RECT_PARMS;
-typedef MCI_ANIM_RECT_PARMS FAR * LPMCI_ANIM_RECT_PARMS;
+} MCI_ANIM_RECT_PARMS, *LPMCI_ANIM_RECT_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	RECT    rc;
 	HDC     hDC;
-	} MCI_ANIM_UPDATE_PARMS;
-typedef MCI_ANIM_UPDATE_PARMS FAR * LPMCI_ANIM_UPDATE_PARMS;
+} MCI_ANIM_UPDATE_PARMS, *LPMCI_ANIM_UPDATE_PARMS;
 
 #define MCI_OVLY_OPEN_WS                0x00010000L
 #define MCI_OVLY_OPEN_PARENT            0x00020000L
@@ -1357,8 +1301,7 @@
 	DWORD   dwStyle;
 	HWND    hWndParent;
 	UINT    wReserved1;
-	} MCI_OVLY_OPEN_PARMS;
-typedef MCI_OVLY_OPEN_PARMS FAR *LPMCI_OVLY_OPEN_PARMS;
+} MCI_OVLY_OPEN_PARMS, *LPMCI_OVLY_OPEN_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
@@ -1367,8 +1310,7 @@
 	UINT    nCmdShow;
 	UINT    wReserved2;
 	LPCSTR  lpstrText;
-	} MCI_OVLY_WINDOW_PARMS;
-typedef MCI_OVLY_WINDOW_PARMS FAR * LPMCI_OVLY_WINDOW_PARMS;
+} MCI_OVLY_WINDOW_PARMS, *LPMCI_OVLY_WINDOW_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
@@ -1378,22 +1320,19 @@
 #else   /* ifdef MCI_USE_OFFEXT */
 	RECT    rc;
 #endif  /* ifdef MCI_USE_OFFEXT */
-	} MCI_OVLY_RECT_PARMS;
-typedef MCI_OVLY_RECT_PARMS FAR * LPMCI_OVLY_RECT_PARMS;
+} MCI_OVLY_RECT_PARMS, *LPMCI_OVLY_RECT_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	LPCSTR  lpfilename;
 	RECT    rc;
-	} MCI_OVLY_SAVE_PARMS;
-typedef MCI_OVLY_SAVE_PARMS FAR * LPMCI_OVLY_SAVE_PARMS;
+} MCI_OVLY_SAVE_PARMS, *LPMCI_OVLY_SAVE_PARMS;
 
 typedef struct {
 	DWORD   dwCallback;
 	LPCSTR  lpfilename;
 	RECT    rc;
-	} MCI_OVLY_LOAD_PARMS;
-typedef MCI_OVLY_LOAD_PARMS FAR * LPMCI_OVLY_LOAD_PARMS;
+} MCI_OVLY_LOAD_PARMS, *LPMCI_OVLY_LOAD_PARMS;
 
 
 /**************************************************************
@@ -1525,23 +1464,20 @@
 	DWORD   	dwInstance;
 	HMIDIOUT	hMidi;
 	DWORD   	dwFlags;
-	}	PORTALLOC;
-typedef PORTALLOC FAR *LPPORTALLOC;
+} PORTALLOC, *LPPORTALLOC;
 
 typedef struct {
 	HWAVE			hWave;
 	LPWAVEFORMAT	lpFormat;
 	DWORD			dwCallBack;
 	DWORD			dwInstance;
-	} WAVEOPENDESC;
-typedef WAVEOPENDESC FAR *LPWAVEOPENDESC;
+} WAVEOPENDESC, *LPWAVEOPENDESC;
 
 typedef struct {
 	HMIDI			hMidi;
 	DWORD			dwCallback;
 	DWORD			dwInstance;
-	} MIDIOPENDESC;
-typedef MIDIOPENDESC FAR *LPMIDIOPENDESC;
+} MIDIOPENDESC, *LPMIDIOPENDESC;
 
 typedef struct {
 	UINT			wDelay;
@@ -1549,8 +1485,7 @@
 	LPTIMECALLBACK	lpFunction;
 	DWORD			dwUser;
 	UINT			wFlags;
-	} TIMEREVENT;
-typedef TIMEREVENT FAR *LPTIMEREVENT;
+} TIMEREVENT, *LPTIMEREVENT;
 
 typedef struct {
 	UINT    wDeviceID;				/* device ID */
@@ -1559,8 +1494,7 @@
 									/* filled in by the driver */
 	UINT    wType;					/* driver type */
 									/* filled in by the driver */
-	} MCI_OPEN_DRIVER_PARMS;
-typedef MCI_OPEN_DRIVER_PARMS FAR * LPMCI_OPEN_DRIVER_PARMS;
+} MCI_OPEN_DRIVER_PARMS, * LPMCI_OPEN_DRIVER_PARMS;
 
 DWORD mciGetDriverData(UINT uDeviceID);
 BOOL  mciSetDriverData(UINT uDeviceID, DWORD dwData);