|
|
1.1 root 1: /*++ BUILD Version: 0001 // Increment this if a change has global effects
2:
3: Copyright (c) 1990-91, Microsoft Corporation
4:
5: Module Name:
6:
7: winmm.h
8:
9: Abstract:
10:
11: This include file defines all the support for Multimedia applications.
12:
13: 24-Apr-91 MMTIME structure added. NigelT.
14:
15: --*/
16:
17: #ifndef _WINMM_
18: #define _WINMM_
19:
20: /****************************************************************************
21:
22: Multimedia Systems Window Messages
23:
24: ****************************************************************************/
25:
26: #ifndef WM_MM_RESERVED_FIRST
27: // taken from windows.h
28: /* The following message range reserved for multi-media */
29: #define WM_MM_RESERVED_FIRST 0x03B0
30: #define WM_MM_RESERVED_LAST 0x03EF
31: #endif
32:
33: #define MM_MCINOTIFY (WM_MM_RESERVED_FIRST + 9)
34: #define MM_MCISYSTEM_STRING (WM_MM_RESERVED_FIRST + 26)
35:
36: /****************************************************************************
37:
38: PlaySound API and flags
39:
40: ****************************************************************************/
41:
42: BOOL APIENTRY PlaySound(LPSTR lpszName, HANDLE hModule, DWORD dwFlags);
43:
44: // sound types
45:
46: #define SND_ALIAS 0x00000001 // name is a WIN.INI [sounds] entry
47: #define SND_FILENAME 0x00000002 // name is a file name
48: #define SND_RESOURCE 0x00000003 // name is a resource name or atom
49: #define SND_TYPE_MASK 0x000000FF
50:
51: #define SND_ASYNC 0x00000000 // sound plays asynchronously
52: #define SND_SYNC 0x00000100 // sound plays synchronously
53:
54: #define SND_NODEFAULT 0x00001000 // don't use the default sound
55: #define SND_NOWAIT 0x00002000 // don't wait if the driver is busy
56:
57: /***************************************************************************
58:
59: Time structure used by Multimedia APIs
60:
61: ***************************************************************************/
62:
63: typedef struct _MMTIME {
64: WORD wType; // the contents of the union
65: union {
66: DWORD ms; // milliseconds
67: DWORD sample; // samples
68: DWORD cb; // byte count
69: struct { // SMPTE
70: BYTE hour; // hours
71: BYTE minutes; // minutes - can't use min as it's a macro
72: BYTE sec; // seconds
73: BYTE frame; // frames
74: BYTE fps; // frames per second (24, 25, 29(30 drop) or 30)
75: BYTE dummy;
76: } smpte;
77: struct { // MIDI
78: DWORD songptrpos; // song pointer position
79: } midi;
80: } u;
81: } MMTIME, *PMMTIME, *LPMMTIME;
82:
83: //
84: // types for MMTIME struct
85: //
86:
87: #define TIME_MS 0x0001 // time counted in Milliseconds
88: #define TIME_SAMPLES 0x0002 // number of wave samples
89: #define TIME_BYTES 0x0004 // current byte offset
90: #define TIME_SMPTE 0x0008 // smpte time
91: #define TIME_MIDI 0x0010 // midi time
92:
93: /***************************************************************************
94:
95: MMIO types, structures and APIs
96:
97: ***************************************************************************/
98:
99: typedef DWORD FOURCC; // a four character code
100: typedef HANDLE HMMIO; // a handle to an open file
101:
102: #define CFSEPCHAR '+' // compound file name separator char.
103:
104: typedef LONG (*LPMMIOPROC)(
105: LPSTR lpmmioinfo,
106: WORD wMsg,
107: LONG lParam1,
108: LONG lParam2
109: );
110:
111: typedef struct _MMIOINFO // structure for representing MMIO state
112: {
113: /* general fields */
114: DWORD dwFlags; // general status flags
115: FOURCC fccIOProc; // ptr. to I/O procedure
116: LPMMIOPROC pIOProc; // ptr. to I/O procedure
117: WORD wErrorRet; // place for error to be returned
118: WORD wReserved; // <for structure alignment>
119:
120: /* fields maintained by MMIO functions during buffered I/O */
121: LONG cchBuffer; // size of I/O buffer (or 0L)
122: LPSTR pchBuffer; // start of I/O buffer (or NULL)
123: LPSTR pchNext; // ptr. to next byte to read/write
124: LPSTR pchEndRead; // ptr. to last valid byte to read
125: LPSTR pchEndWrite; // ptr. to last available byte to write
126: LONG lBufOffset; // disk offset of start of buffer
127:
128: /* fields maintained by I/O procedure */
129: LONG lDiskOffset; // disk offset of next read or write
130: DWORD adwInfo[3]; // data specific to type of MMIOPROC
131:
132: /* other fields maintained by MMIO */
133: DWORD dwReserved1; // reserved for MMIO use
134: DWORD dwReserved2; // reserved for MMIO use
135: HMMIO hmmio; // handle to open file
136: } MMIOINFO, FAR * LPMMIOINFO;
137:
138: typedef struct _MMCKINFO // structure for representing RIFF chunk info.
139: {
140: FOURCC ckid; // chunk ID
141: DWORD cksize; // chunk size
142: FOURCC fccType; // form type or list type
143: DWORD dwDataOffset; // offset of data portion of chunk
144: DWORD dwFlags; // flags used by MMIO functions
145: } MMCKINFO, FAR *LPMMCKINFO;
146:
147: /* <dwFlags> field of MMIOINFO structure -- many same as OpenFile() flags */
148: /* Low word of flags will be passed to OpenFile() -- therefore, any MMIO-
149: specific flags should be in the high word. */
150: #define MMIO_RWMODE 0x00000003 // open file for reading/writing/both
151: #define MMIO_SHAREMODE 0x00000070 // file sharing mode number
152: #define MMIO_CREATE 0x00001000 // create new file (or truncate file)
153: #define MMIO_DELETE 0x00000200 // create new file (or truncate file)
154: #define MMIO_ALLOCBUF 0x00010000 // mmioOpen() should allocate a buffer
155: #define MMIO_DIRTY 0x10000000 // I/O buffer is dirty
156: /* MMIO_DIRTY is also used in the <dwFlags> field of MMCKINFO structure */
157:
158: /* read/write mode numbers (bit field MMIO_RWMODE) */
159: #define MMIO_READ 0x00000000 // open file for reading only
160: #define MMIO_WRITE 0x00000001 // open file for writing only
161: #define MMIO_READWRITE 0x00000002 // open file for reading and writing
162:
163: /* share mode numbers (bit field MMIO_SHAREMODE) */
164: #define MMIO_COMPAT 0x00000000 // compatibility mode
165: #define MMIO_EXCLUSIVE 0x00000010 // exclusive-access mode
166: #define MMIO_DENYWRITE 0x00000020 // deny writing to other processes
167: #define MMIO_DENYREAD 0x00000030 // deny reading to other processes
168: #define MMIO_DENYNONE 0x00000040 // deny nothing to other processes
169:
170: /* flags for other functions */
171: #define MMIO_FHOPEN 0x0010 // mmioClose(): keep file handle open
172: #define MMIO_EMPTYBUF 0x0010 // mmioFlush(): empty the I/O buffer
173: #define MMIO_TOUPPER 0x0010 // mmioStringToFOURCC(): cvt. to u-case
174: #define MMIO_INSTALLPROC 0x00010000 // mmioInstallIOProc(): install MMIOProc
175: #define MMIO_REMOVEPROC 0x00020000 // mmioInstallIOProc(): remove MMIOProc
176: #define MMIO_FINDPROC 0x00040000 // mmioInstallIOProc(): find an MMIOProc
177: #define MMIO_FINDCHUNK 0x0010 // mmioDescend(): find a chunk by ID
178: #define MMIO_FINDRIFF 0x0020 // mmioDescend(): find a LIST chunk
179: #define MMIO_FINDLIST 0x0040 // mmioDescend(): find a RIFF chunk
180: #define MMIO_CREATERIFF 0x0020 // mmioCreateChunk(): make a LIST chunk
181: #define MMIO_CREATELIST 0x0040 // mmioCreateChunk(): make a RIFF chunk
182:
183: /* message numbers for MMIOPROC */
184: #define MMIOM_READ MMIO_READ // read (must equal MMIO_READ!)
185: #define MMIOM_WRITE MMIO_WRITE // write (must equal MMIO_WRITE!)
186: #define MMIOM_SEEK 2 // seek to a new position in file
187: #define MMIOM_OPEN 3 // open file
188: #define MMIOM_CLOSE 4 // close file
189: #define MMIOM_WRITEFLUSH 5 // write and flush
190: #define MMIOM_USER 0x8000 // beginning of user-defined messages
191:
192: /* standard four character codes */
193: #define FOURCC_RIFF mmioFOURCC('R', 'I', 'F', 'F')
194: #define FOURCC_LIST mmioFOURCC('L', 'I', 'S', 'T')
195:
196: /* four character codes used to identify standard built-in I/O procedures */
197: #define FOURCC_DOS mmioFOURCC('D', 'O', 'S', ' ')
198: #define FOURCC_MEM mmioFOURCC('M', 'E', 'M', ' ')
199:
200: /* error numbers */
201: #define MMIOERR_BASE 256
202: #define MMIOERR_FILENOTFOUND (MMIOERR_BASE + 1) // file not found
203: #define MMIOERR_OUTOFMEMORY (MMIOERR_BASE + 2) // out of memory
204: #define MMIOERR_CANNOTOPEN (MMIOERR_BASE + 3) // cannot open
205: #define MMIOERR_CANNOTCLOSE (MMIOERR_BASE + 4) // cannot close
206: #define MMIOERR_CANNOTREAD (MMIOERR_BASE + 5) // cannot read
207: #define MMIOERR_CANNOTWRITE (MMIOERR_BASE + 6) // cannot write
208: #define MMIOERR_CANNOTSEEK (MMIOERR_BASE + 7) // cannot seek
209: #define MMIOERR_CANNOTEXPAND (MMIOERR_BASE + 8) // cannot expand file
210: #define MMIOERR_CHUNKNOTFOUND (MMIOERR_BASE + 9) // chunk not found
211: #define MMIOERR_UNBUFFERED (MMIOERR_BASE + 10) // file is unbuffered
212:
213: /* other constants */
214: #define MMIO_DEFAULTBUFFER 8192 // default buffer size
215:
216: /* macros */
217: #define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
218: ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
219: ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
220:
221: /* MMIO prototypes */
222: FOURCC mmioStringToFOURCC(LPSTR sz, WORD wFlags);
223: LPMMIOPROC mmioInstallIOProc(FOURCC fccIOProc, LPMMIOPROC pIOProc,
224: DWORD dwFlags);
225: HMMIO mmioOpen(LPSTR szFileName, LPMMIOINFO lpmmioinfo,
226: DWORD dwOpenFlags);
227: WORD mmioClose(HMMIO hmmio, WORD wFlags);
228: LONG mmioRead(HMMIO hmmio, LPSTR pch, LONG cch);
229: LONG mmioWrite(HMMIO hmmio, LPSTR pch, LONG cch);
230: LONG mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin);
231: WORD mmioGetInfo(HMMIO hmmio, LPMMIOINFO lpmmioinfo, WORD wFlags);
232: WORD mmioSetInfo(HMMIO hmmio, LPMMIOINFO lpmmioinfo, WORD wFlags);
233: WORD mmioSetBuffer(HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer,
234: WORD wFlags);
235: WORD mmioFlush(HMMIO hmmio, WORD wFlags);
236: WORD mmioAdvance(HMMIO hmmio, LPMMIOINFO lpmmioinfo, WORD wFlags);
237: LONG mmioSendMessage(HANDLE hmmio, WORD wMsg,
238: LONG lParam1, LONG lParam2);
239:
240: /* RIFF I/O prototypes */
241: WORD mmioDescend(HANDLE hmmio, LPMMCKINFO lpck,
242: LPMMCKINFO lpckParent, WORD wFlags);
243: WORD mmioAscend(HANDLE hmmio, LPMMCKINFO lpck, WORD wFlags);
244: WORD mmioCreateChunk(HANDLE hmmio, LPMMCKINFO lpck, WORD wFlags);
245:
246: /***************************************************************************
247:
248: WAVE file specific defines
249:
250: ***************************************************************************/
251:
252: #define ckidWAVE mmioFOURCC('W','A','V','E') // RIFF WAVE file id
253:
254: //
255: // basic wave format for sampled audio
256: //
257:
258: typedef struct _WAVEFORMAT {
259: USHORT FormatTag; // format type (WAVE_FORMAT_PCM)
260: USHORT Channels; // number of channels
261: ULONG SamplesPerSec; // sample rate
262: ULONG AvgBytesPerSec; // for buffer estimation
263: USHORT BlockAlign; // block size of data
264: } WAVEFORMAT, *PWAVEFORMAT;
265:
266: //
267: // wave format for PCM sampled audio
268: //
269:
270: typedef struct _PCMWAVEFORMAT {
271: USHORT FormatTag; // format type (WAVE_FORMAT_PCM)
272: USHORT Channels; // number of channels
273: ULONG SamplesPerSec; // sample rate
274: ULONG AvgBytesPerSec; // for buffer estimation
275: USHORT BlockAlign; // block size of data
276: USHORT BitsPerSample; // bits per sample
277: } PCMWAVEFORMAT, *PPCMWAVEFORMAT;
278:
279: #define WAVE_FORMAT_PCM 1
280:
281: /****************************************************************************
282:
283: String resource number bases
284:
285: ****************************************************************************/
286:
287: #define MAXERRORLENGTH 128 // maximum error text length (including
288: // terminating null)
289: // error string resources
290: #define MMSYSERR_BASE 0
291: #define WAVERR_BASE 32
292: #define MIDIERR_BASE 64
293: #define TIMERR_BASE 128
294: #define JOYERR_BASE 160
295: #define MCIERR_BASE 256
296:
297: #define MCI_STRING_OFFSET 512 // general mci string resources
298: #define MCI_VD_OFFSET 544 // videodisc command string resources
299: #define MCI_CD_OFFSET 576 // redbook audio command string resources
300: #define MCI_WAVE_OFFSET 608 // wave audio command string resources
301:
302: // THIS NUMBER IS HARDCODED WHERE THE MCI_SEQ_<x>'s ARE #define'd
303: // You must change those definitions if you change this number
304: #define MCI_SEQ_OFFSET 640 // sequencer command string resources
305:
306: // THIS NUMBER IS HARDCODED WHERE THE MCI_FORMAT_<x>'s ARE #define'd
307: // You must change those definitions if you change this number
308: #define MCI_FORMATS_OFFSET 672 // MCI Time Formats
309:
310: /****************************************************************************
311:
312: MCI
313:
314: ****************************************************************************/
315:
316:
317: //
318: // MCI error return values
319: //
320:
321:
322: #define MCIERR_INVALID_DEVICE_ID (MCIERR_BASE + 1)
323: #define MCIERR_UNRECOGNIZED_KEYWORD (MCIERR_BASE + 3)
324: #define MCIERR_UNRECOGNIZED_COMMAND (MCIERR_BASE + 5)
325: #define MCIERR_HARDWARE (MCIERR_BASE + 6)
326: #define MCIERR_INVALID_DEVICE_NAME (MCIERR_BASE + 7)
327: #define MCIERR_OUT_OF_MEMORY (MCIERR_BASE + 8)
328: #define MCIERR_DEVICE_OPEN (MCIERR_BASE + 9)
329: #define MCIERR_CANNOT_LOAD_DRIVER (MCIERR_BASE + 10)
330: #define MCIERR_MISSING_COMMAND_STRING (MCIERR_BASE + 11)
331: #define MCIERR_PARAM_OVERFLOW (MCIERR_BASE + 12)
332: #define MCIERR_MISSING_STRING_ARGUMENT (MCIERR_BASE + 13)
333: #define MCIERR_BAD_INTEGER (MCIERR_BASE + 14)
334: #define MCIERR_PARSER_INTERNAL (MCIERR_BASE + 15)
335: #define MCIERR_DRIVER_INTERNAL (MCIERR_BASE + 16)
336: #define MCIERR_MISSING_PARAMETER (MCIERR_BASE + 17)
337: #define MCIERR_UNSUPPORTED_FUNCTION (MCIERR_BASE + 18)
338: #define MCIERR_FILE_NOT_FOUND (MCIERR_BASE + 19)
339: #define MCIERR_DEVICE_NOT_READY (MCIERR_BASE + 20)
340: #define MCIERR_INTERNAL (MCIERR_BASE + 21)
341: #define MCIERR_DRIVER (MCIERR_BASE + 22)
342: #define MCIERR_CANNOT_USE_ALL (MCIERR_BASE + 23)
343: #define MCIERR_MULTIPLE (MCIERR_BASE + 24)
344: #define MCIERR_EXTENSION_NOT_FOUND (MCIERR_BASE + 25)
345: #define MCIERR_OUTOFRANGE (MCIERR_BASE + 26)
346: #define MCIERR_FLAGS_NOT_COMPATIBLE (MCIERR_BASE + 28)
347: #define MCIERR_FILE_NOT_SAVED (MCIERR_BASE + 30)
348: #define MCIERR_DEVICE_TYPE_REQUIRED (MCIERR_BASE + 31)
349: #define MCIERR_DEVICE_LOCKED (MCIERR_BASE + 32)
350: #define MCIERR_DUPLICATE_ALIAS (MCIERR_BASE + 33)
351: #define MCIERR_BAD_CONSTANT (MCIERR_BASE + 34)
352: #define MCIERR_MUST_USE_SHAREABLE (MCIERR_BASE + 35)
353: #define MCIERR_MISSING_DEVICE_NAME (MCIERR_BASE + 36)
354: #define MCIERR_BAD_TIME_FORMAT (MCIERR_BASE + 37)
355: #define MCIERR_NO_CLOSING_QUOTE (MCIERR_BASE + 38)
356: #define MCIERR_DUPLICATE_FLAGS (MCIERR_BASE + 39)
357: #define MCIERR_INVALID_FILE (MCIERR_BASE + 40)
358: #define MCIERR_NULL_PARAMETER_BLOCK (MCIERR_BASE + 41)
359: #define MCIERR_UNNAMED_RESOURCE (MCIERR_BASE + 42)
360: #define MCIERR_NEW_REQUIRES_ALIAS (MCIERR_BASE + 43)
361: #define MCIERR_NOTIFY_ON_AUTO_OPEN (MCIERR_BASE + 44)
362: #define MCIERR_NO_ELEMENT_ALLOWED (MCIERR_BASE + 45)
363:
364: #define MCIERR_WAVE_OUTPUTSINUSE (MCIERR_BASE + 64)
365: #define MCIERR_WAVE_SETOUTPUTINUSE (MCIERR_BASE + 65)
366: #define MCIERR_WAVE_INPUTSINUSE (MCIERR_BASE + 66)
367: #define MCIERR_WAVE_SETINPUTINUSE (MCIERR_BASE + 67)
368: #define MCIERR_WAVE_OUTPUTUNSPECIFIED (MCIERR_BASE + 68)
369: #define MCIERR_WAVE_INPUTUNSPECIFIED (MCIERR_BASE + 69)
370: #define MCIERR_WAVE_OUTPUTSUNSUITABLE (MCIERR_BASE + 70)
371: #define MCIERR_WAVE_SETOUTPUTUNSUITABLE (MCIERR_BASE + 71)
372: #define MCIERR_WAVE_INPUTSUNSUITABLE (MCIERR_BASE + 72)
373: #define MCIERR_WAVE_SETINPUTUNSUITABLE (MCIERR_BASE + 73)
374:
375:
376: #define MCIERR_SEQ_DIV_INCOMPATIBLE (MCIERR_BASE + 80)
377: #define MCIERR_SEQ_PORT_INUSE (MCIERR_BASE + 81)
378: #define MCIERR_SEQ_PORT_NONEXISTENT (MCIERR_BASE + 82)
379: #define MCIERR_SEQ_PORT_MAPNODEVICE (MCIERR_BASE + 83)
380: #define MCIERR_SEQ_PORT_MISCERROR (MCIERR_BASE + 84)
381: #define MCIERR_SEQ_TIMER (MCIERR_BASE + 85)
382: #define MCIERR_SEQ_PORTUNSPECIFIED (MCIERR_BASE + 86)
383:
384: #define MCIERR_NO_WINDOW (MCIERR_BASE + 90)
385: #define MCIERR_CREATEWINDOW (MCIERR_BASE + 91)
386: #define MCIERR_FILE_READ (MCIERR_BASE + 92)
387: #define MCIERR_FILE_WRITE (MCIERR_BASE + 93)
388:
389: // All custom device driver errors must be greater than this value
390: #define MCIERR_CUSTOM_DRIVER_BASE (MCIERR_BASE + 256)
391:
392: /****************************************************************************
393:
394: MCI command message identifiers
395:
396: *****************************************************************************/
397: // Message numbers are hard coded because the resource compiler
398: // will otherwise fail on the RCDATA command table in mmsystem.rc
399:
400: // They must be in the range between MCI_FIRST and MCI_LAST
401:
402: #define MCI_FIRST 0x0800
403: // Messages 0x801 and 0x802 are reserved
404: #define MCI_OPEN 0x0803
405: #define MCI_CLOSE 0x0804
406: #define MCI_ESCAPE 0x0805
407: #define MCI_PLAY 0x0806
408: #define MCI_SEEK 0x0807
409: #define MCI_STOP 0x0808
410: #define MCI_PAUSE 0x0809
411: #define MCI_INFO 0x080A
412: #define MCI_GETDEVCAPS 0x080B
413: #define MCI_SPIN 0x080C
414: #define MCI_SET 0x080D
415: #define MCI_STEP 0x080E
416: #define MCI_RECORD 0x080F
417: #define MCI_SYSINFO 0x0810
418: #define MCI_BREAK 0x0811
419: #define MCI_SOUND 0x0812
420: #define MCI_SAVE 0x0813
421: #define MCI_STATUS 0x0814
422:
423: #define MCI_CUE 0x0830
424:
425: #define MCI_REALIZE 0x0840
426: #define MCI_WINDOW 0x0841
427: #define MCI_PUT 0x0842
428: #define MCI_WHERE 0x0843
429: #define MCI_FREEZE 0x0844
430: #define MCI_UNFREEZE 0x0845
431:
432: #define MCI_LOAD 0x0850
433: #define MCI_CUT 0x0851
434: #define MCI_COPY 0x0852
435: #define MCI_PASTE 0x0853
436: #define MCI_UPDATE 0x0854
437: #define MCI_RESUME 0x0855
438: #define MCI_DELETE 0x0856
439:
440: #define MCI_LAST 0x0FFF
441:
442: // the next 0x400 message ID's are reserved for custom drivers
443: #define MCI_USER_MESSAGES (0x400 + MCI_FIRST)
444:
445: /****************************************************************************
446:
447: Structures for the lpdwParams (dwParam2) of mciSendCommand for those
448: command messages that may be parsed in string form.
449:
450: *****************************************************************************/
451:
452: // string resource ID's for the MCI core
453:
454: #define MCI_FALSE (MCI_STRING_OFFSET + 0)
455: #define MCI_TRUE (MCI_STRING_OFFSET + 1)
456: #define MCI_NONE (MCI_STRING_OFFSET + 2)
457:
458: #define MCI_ALL_DEVICE_ID 0xFFFF
459:
460: #define MCI_DEVTYPE_VCR (MCI_STRING_OFFSET + 3)
461: #define MCI_DEVTYPE_VIDEODISC (MCI_STRING_OFFSET + 4)
462: #define MCI_DEVTYPE_OVERLAY (MCI_STRING_OFFSET + 5)
463: #define MCI_DEVTYPE_CD_AUDIO (MCI_STRING_OFFSET + 6)
464: #define MCI_DEVTYPE_DAT (MCI_STRING_OFFSET + 7)
465: #define MCI_DEVTYPE_SCANNER (MCI_STRING_OFFSET + 8)
466: #define MCI_DEVTYPE_ANIMATION (MCI_STRING_OFFSET + 9)
467: #define MCI_DEVTYPE_DIGITAL_VIDEO (MCI_STRING_OFFSET + 10)
468: #define MCI_DEVTYPE_OTHER (MCI_STRING_OFFSET + 11)
469: #define MCI_DEVTYPE_WAVEFORM_AUDIO (MCI_STRING_OFFSET + 12)
470: #define MCI_DEVTYPE_SEQUENCER (MCI_STRING_OFFSET + 13)
471:
472: #define MCI_DEVTYPE_FIRST MCI_DEVTYPE_VCR
473: #define MCI_DEVTYPE_LAST MCI_DEVTYPE_SEQUENCER
474: #define MCI_DEVTYPE_FIRST_USER 0x1000
475:
476: #define MCI_MODE_NOT_READY (MCI_STRING_OFFSET + 20)
477: #define MCI_MODE_STOP (MCI_STRING_OFFSET + 21)
478: #define MCI_MODE_PLAY (MCI_STRING_OFFSET + 22)
479: #define MCI_MODE_RECORD (MCI_STRING_OFFSET + 23)
480: #define MCI_MODE_SEEK (MCI_STRING_OFFSET + 24)
481: #define MCI_MODE_PAUSE (MCI_STRING_OFFSET + 25)
482: #define MCI_MODE_OPEN (MCI_STRING_OFFSET + 26)
483:
484: // These are not based on MCI_FORMATS_OFFSET because of resource
485: // compiler limitations
486: #define MCI_FORMAT_MILLISECONDS 672
487: #define MCI_FORMAT_HMS 673
488: #define MCI_FORMAT_MSF 674
489: #define MCI_FORMAT_FRAMES 675
490: #define MCI_FORMAT_SMPTE_24 676
491: #define MCI_FORMAT_SMPTE_25 677
492: #define MCI_FORMAT_SMPTE_30 678
493: #define MCI_FORMAT_SMPTE_30DROP 679
494: #define MCI_FORMAT_BYTES 680
495: #define MCI_FORMAT_SAMPLES 681
496: #define MCI_FORMAT_TMSF 682
497:
498: #define MCI_MSF_MINUTE(msf) ((BYTE)(msf))
499: #define MCI_MSF_SECOND(msf) ((BYTE)(((WORD)(msf)) >> 8))
500: #define MCI_MSF_FRAME(msf) ((BYTE)((msf)>>16))
501:
502: #define MCI_MAKE_MSF(m, s, f) ((DWORD)(((BYTE)(m) | \
503: ((WORD)(s)<<8)) | \
504: (((DWORD)(BYTE)(f))<<16)))
505:
506: #define MCI_TMSF_TRACK(tmsf) ((BYTE)(tmsf))
507: #define MCI_TMSF_MINUTE(tmsf) ((BYTE)(((WORD)(tmsf)) >> 8))
508: #define MCI_TMSF_SECOND(tmsf) ((BYTE)((tmsf)>>16))
509: #define MCI_TMSF_FRAME(tmsf) ((BYTE)((tmsf)>>24))
510:
511: #define MCI_MAKE_TMSF(t, m, s, f) ((DWORD)(((BYTE)(t) | \
512: ((WORD)(m)<<8)) | \
513: (((DWORD) \
514: (BYTE)(s) | \
515: ((WORD)(f)<<8)) \
516: <<16)))
517:
518: #define MCI_HMS_HOUR(hms) ((BYTE)(hms))
519: #define MCI_HMS_MINUTE(hms) ((BYTE)(((WORD)(hms)) >> 8))
520: #define MCI_HMS_SECOND(hms) ((BYTE)((hms)>>16))
521:
522: #define MCI_MAKE_HMS(h, m, s) ((DWORD)(((BYTE)(h) | \
523: ((WORD)(m)<<8)) | \
524: (((DWORD)(BYTE)(s))<<16)))
525:
526:
527: // Flags for mciDriverNotify
528:
529: #define MCI_NOTIFY_SUCCESSFUL 0x0001
530: #define MCI_NOTIFY_SUPERSEDED 0x0002
531: #define MCI_NOTIFY_ABORTED 0x0004
532: #define MCI_NOTIFY_FAILURE 0x0008
533:
534: // NOTE: All flags must have an "L" suffix in order to be parsed as
535: // DWORDs by the resource compiler
536:
537: #define MCI_NOTIFY 0x00000001L
538: #define MCI_WAIT 0x00000002L
539: #define MCI_FROM 0x00000004L
540: #define MCI_TO 0x00000008L
541: #define MCI_TRACK 0x00000010L
542:
543: #define MCI_OPEN_SHAREABLE 0x00000100L
544: #define MCI_OPEN_ELEMENT 0x00000200L
545: #define MCI_OPEN_ALIAS 0x00000400L
546: #define MCI_OPEN_ELEMENT_ID 0x00000800L
547: #define MCI_OPEN_TYPE_ID 0x00001000L
548: #define MCI_OPEN_TYPE 0x00002000L
549:
550: #define MCI_SEEK_TO_START 0x00000100L
551: #define MCI_SEEK_TO_END 0x00000200L
552:
553: #define MCI_STATUS_ITEM 0x00000100L
554: #define MCI_STATUS_START 0x00000200L
555:
556: #define MCI_STATUS_LENGTH 0x00000001L
557: #define MCI_STATUS_POSITION 0x00000002L
558: #define MCI_STATUS_NUMBER_OF_TRACKS 0x00000003L
559: #define MCI_STATUS_MODE 0x00000004L
560: #define MCI_STATUS_MEDIA_PRESENT 0x00000005L
561: #define MCI_STATUS_TIME_FORMAT 0x00000006L
562: #define MCI_STATUS_READY 0x00000007L
563: #define MCI_STATUS_CURRENT_TRACK 0x00000008L
564:
565: #define MCI_INFO_PRODUCT 0x00000100L
566: #define MCI_INFO_FILE 0x00000200L
567:
568: #define MCI_GETDEVCAPS_ITEM 0x00000100L
569:
570: #define MCI_GETDEVCAPS_CAN_RECORD 0x00000001L
571: #define MCI_GETDEVCAPS_HAS_AUDIO 0x00000002L
572: #define MCI_GETDEVCAPS_HAS_VIDEO 0x00000003L
573: #define MCI_GETDEVCAPS_DEVICE_TYPE 0x00000004L
574: #define MCI_GETDEVCAPS_USES_FILES 0x00000005L
575: #define MCI_GETDEVCAPS_COMPOUND_DEVICE 0x00000006L
576: #define MCI_GETDEVCAPS_CAN_EJECT 0x00000007L
577: #define MCI_GETDEVCAPS_CAN_PLAY 0x00000008L
578: #define MCI_GETDEVCAPS_CAN_SAVE 0x00000009L
579:
580: #define MCI_SYSINFO_QUANTITY 0x00000100L
581: #define MCI_SYSINFO_OPEN 0x00000200L
582: #define MCI_SYSINFO_NAME 0x00000400L
583: #define MCI_SYSINFO_INSTALLNAME 0x00000800L
584:
585: #define MCI_SET_DOOR_OPEN 0x00000100L
586: #define MCI_SET_DOOR_CLOSED 0x00000200L
587: #define MCI_SET_TIME_FORMAT 0x00000400L
588: #define MCI_SET_AUDIO 0x00000800L
589: #define MCI_SET_VIDEO 0x00001000L
590: #define MCI_SET_ON 0x00002000L
591: #define MCI_SET_OFF 0x00004000L
592:
593: #define MCI_SET_AUDIO_ALL 0x00004001L
594: #define MCI_SET_AUDIO_LEFT 0x00004002L
595: #define MCI_SET_AUDIO_RIGHT 0x00004003L
596:
597: #define MCI_BREAK_KEY 0x00000100L
598: #define MCI_BREAK_HWND 0x00000200L
599: #define MCI_BREAK_OFF 0x00000400L
600:
601: #define MCI_RECORD_INSERT 0x00000100L
602: #define MCI_RECORD_OVERWRITE 0x00000200L
603:
604: #define MCI_SOUND_NAME 0x00000100L
605:
606: #define MCI_SAVE_FILE 0x00000100L
607:
608: #define MCI_LOAD_FILE 0x00000100L
609:
610: typedef struct {
611: DWORD dwCallback;
612: } MCI_GENERIC_PARMS;
613: typedef MCI_GENERIC_PARMS FAR *LPMCI_GENERIC_PARMS;
614:
615: typedef struct {
616: DWORD dwCallback;
617: WORD wDeviceID;
618: WORD wReserved0;
619: LPSTR lpstrDeviceType;
620: LPSTR lpstrElementName;
621: LPSTR lpstrAlias;
622: } MCI_OPEN_PARMS;
623: typedef MCI_OPEN_PARMS FAR *LPMCI_OPEN_PARMS;
624:
625: typedef struct {
626: DWORD dwCallback;
627: DWORD dwFrom;
628: DWORD dwTo;
629: } MCI_PLAY_PARMS;
630: typedef MCI_PLAY_PARMS FAR *LPMCI_PLAY_PARMS;
631:
632: typedef struct {
633: DWORD dwCallback;
634: DWORD dwTo;
635: } MCI_SEEK_PARMS;
636: typedef MCI_SEEK_PARMS FAR *LPMCI_SEEK_PARMS;
637:
638: typedef struct {
639: DWORD dwCallback;
640: DWORD dwReturn;
641: DWORD dwItem;
642: DWORD dwTrack;
643: } MCI_STATUS_PARMS;
644: typedef MCI_STATUS_PARMS FAR * LPMCI_STATUS_PARMS;
645:
646: typedef struct {
647: DWORD dwCallback;
648: LPSTR lpstrReturn;
649: DWORD dwRetSize;
650: } MCI_INFO_PARMS;
651: typedef MCI_INFO_PARMS FAR * LPMCI_INFO_PARMS;
652:
653: typedef struct {
654: DWORD dwCallback;
655: DWORD dwReturn;
656: DWORD dwItem;
657: } MCI_GETDEVCAPS_PARMS;
658: typedef MCI_GETDEVCAPS_PARMS FAR * LPMCI_GETDEVCAPS_PARMS;
659:
660: typedef struct {
661: DWORD dwCallback;
662: LPSTR lpstrReturn;
663: DWORD dwRetSize;
664: DWORD dwNumber;
665: WORD wDeviceType;
666: WORD wReserved0;
667: } MCI_SYSINFO_PARMS;
668: typedef MCI_SYSINFO_PARMS FAR * LPMCI_SYSINFO_PARMS;
669:
670: typedef struct {
671: DWORD dwCallback;
672: DWORD dwTimeFormat;
673: DWORD dwAudio;
674: } MCI_SET_PARMS;
675: typedef MCI_SET_PARMS FAR *LPMCI_SET_PARMS;
676:
677: typedef struct {
678: DWORD dwCallback;
679: int nVirtKey;
680: WORD wReserved0;
681: HWND hwndBreak;
682: WORD wReserved1;
683: } MCI_BREAK_PARMS;
684: typedef MCI_BREAK_PARMS FAR * LPMCI_BREAK_PARMS;
685:
686: typedef struct {
687: DWORD dwCallback;
688: LPSTR lpstrSoundName;
689: } MCI_SOUND_PARMS;
690: typedef MCI_SOUND_PARMS FAR * LPMCI_SOUND_PARMS;
691:
692: typedef struct {
693: DWORD dwCallback;
694: LPSTR lpfilename;
695: } MCI_SAVE_PARMS;
696: typedef MCI_SAVE_PARMS FAR * LPMCI_SAVE_PARMS;
697:
698: typedef struct {
699: DWORD dwCallback;
700: LPSTR lpfilename;
701: } MCI_LOAD_PARMS;
702: typedef MCI_LOAD_PARMS FAR * LPMCI_LOAD_PARMS;
703:
704: typedef struct {
705: DWORD dwCallback;
706: DWORD dwFrom;
707: DWORD dwTo;
708: } MCI_RECORD_PARMS;
709: typedef MCI_RECORD_PARMS FAR *LPMCI_RECORD_PARMS;
710:
711: /*****************************************************************************
712:
713: Standard command parameters for videodisc drivers
714:
715: *****************************************************************************/
716:
717: // string resource ID's for videodisc players
718: // return ID's for videodisc status command
719:
720: #define MCI_VD_MODE_PARK (MCI_VD_OFFSET + 3)
721:
722: // return ID's for videodisc MCI_GETDEVCAPS command
723:
724: #define MCI_VD_MEDIA_CLV (MCI_VD_OFFSET + 10)
725: #define MCI_VD_MEDIA_CAV (MCI_VD_OFFSET + 11)
726: #define MCI_VD_MEDIA_OTHER (MCI_VD_OFFSET + 12)
727: #define MCI_VD_FORMAT_TRACK_S (MCI_VD_OFFSET + 13)
728:
729: #define MCI_VD_FORMAT_TRACK 0x4001
730:
731: #define MCI_VD_PLAY_REVERSE 0x00010000L
732: #define MCI_VD_PLAY_FAST 0x00020000L
733: #define MCI_VD_PLAY_SPEED 0x00040000L
734: #define MCI_VD_PLAY_SCAN 0x00080000L
735: #define MCI_VD_PLAY_SLOW 0x00100000L
736:
737: #define MCI_VD_SEEK_REVERSE 0x00010000L
738:
739: #define MCI_VD_STATUS_SPEED 0x00004002L
740: #define MCI_VD_STATUS_FORWARD 0x00004003L
741: #define MCI_VD_STATUS_MEDIA_TYPE 0x00004004L
742: #define MCI_VD_STATUS_SIDE 0x00004005L
743: #define MCI_VD_STATUS_DISC_SIZE 0x00004006L
744:
745: #define MCI_VD_GETDEVCAPS_CLV 0x00010000L
746: #define MCI_VD_GETDEVCAPS_CAV 0x00020000L
747:
748: #define MCI_VD_SPIN_UP 0x00010000L
749: #define MCI_VD_SPIN_DOWN 0x00020000L
750:
751: #define MCI_VD_GETDEVCAPS_CAN_REVERSE 0x00004002L
752: #define MCI_VD_GETDEVCAPS_FAST_RATE 0x00004003L
753: #define MCI_VD_GETDEVCAPS_SLOW_RATE 0x00004004L
754: #define MCI_VD_GETDEVCAPS_NORMAL_RATE 0x00004005L
755:
756: #define MCI_VD_STEP_FRAMES 0x00010000L
757: #define MCI_VD_STEP_REVERSE 0x00020000L
758:
759: #define MCI_VD_ESCAPE_STRING 0x00000100L
760:
761: typedef struct {
762: DWORD dwCallback;
763: DWORD dwFrom;
764: DWORD dwTo;
765: DWORD dwSpeed;
766: } MCI_VD_PLAY_PARMS;
767: typedef MCI_VD_PLAY_PARMS FAR *LPMCI_VD_PLAY_PARMS;
768:
769: typedef struct {
770: DWORD dwCallback;
771: DWORD dwFrames;
772: } MCI_VD_STEP_PARMS;
773: typedef MCI_VD_STEP_PARMS FAR *LPMCI_VD_STEP_PARMS;
774:
775: typedef struct {
776: DWORD dwCallback;
777: LPSTR lpstrCommand;
778: } MCI_VD_ESCAPE_PARMS;
779: typedef MCI_VD_ESCAPE_PARMS FAR *LPMCI_VD_ESCAPE_PARMS;
780:
781: /*****************************************************************************
782:
783: Standard command parameters for waveform audio drivers
784:
785: *****************************************************************************/
786:
787: #define MCI_WAVE_PCM (MCI_WAVE_OFFSET+0)
788: #define MCI_WAVE_MAPPER (MCI_WAVE_OFFSET+1)
789:
790: #define MCI_WAVE_OPEN_BUFFER 0x00010000L
791:
792: #define MCI_WAVE_SET_FORMATTAG 0x00010000L
793: #define MCI_WAVE_SET_CHANNELS 0x00020000L
794: #define MCI_WAVE_SET_SAMPLESPERSEC 0x00040000L
795: #define MCI_WAVE_SET_AVGBYTESPERSEC 0x00080000L
796: #define MCI_WAVE_SET_BLOCKALIGN 0x00100000L
797: #define MCI_WAVE_SET_BITSPERSAMPLE 0x00200000L
798:
799: #define MCI_WAVE_STATUS_FORMATTAG 0x00004001L
800: #define MCI_WAVE_STATUS_CHANNELS 0x00004002L
801: #define MCI_WAVE_STATUS_SAMPLESPERSEC 0x00004003L
802: #define MCI_WAVE_STATUS_AVGBYTESPERSEC 0x00004004L
803: #define MCI_WAVE_STATUS_BLOCKALIGN 0x00004005L
804: #define MCI_WAVE_STATUS_BITSPERSAMPLE 0x00004006L
805: #define MCI_WAVE_STATUS_LEVEL 0x00004007L
806:
807: #define MCI_WAVE_INPUT 0x00400000L
808: #define MCI_WAVE_OUTPUT 0x00800000L
809:
810:
811: #define MCI_WAVE_SET_ANYINPUT 0x04000000L
812: #define MCI_WAVE_SET_ANYOUTPUT 0x08000000L
813:
814: #define MCI_WAVE_GETDEVCAPS_INPUTS 0x00004001L
815: #define MCI_WAVE_GETDEVCAPS_OUTPUTS 0x00004002L
816:
817: typedef struct {
818: DWORD dwCallback;
819: WORD wDeviceID;
820: WORD wReserved0;
821: LPSTR lpstrDeviceType;
822: LPSTR lpstrElementName;
823: LPSTR lpstrAlias;
824: DWORD dwBufferSeconds;
825: } MCI_WAVE_OPEN_PARMS;
826: typedef MCI_WAVE_OPEN_PARMS FAR *LPMCI_WAVE_OPEN_PARMS;
827:
828: typedef struct {
829: DWORD dwCallback;
830: DWORD dwFrom;
831: DWORD dwTo;
832: } MCI_WAVE_CUT_PARMS;
833: typedef MCI_WAVE_CUT_PARMS FAR *LPMCI_WAVE_CUT_PARMS;
834:
835:
836: typedef struct {
837: DWORD dwCallback;
838: DWORD dwTimeFormat;
839: DWORD dwAudio;
840: WORD wInput;
841: WORD wReserved0;
842: WORD wOutput;
843: WORD wReserved1;
844: WORD wFormatTag;
845: WORD wReserved2;
846: WORD nChannels;
847: WORD wReserved3;
848: DWORD nSamplesPerSec;
849: DWORD nAvgBytesPerSec;
850: WORD nBlockAlign;
851: WORD wReserved4;
852: WORD wBitsPerSample;
853: WORD wReserved5;
854: } MCI_WAVE_SET_PARMS;
855: typedef MCI_WAVE_SET_PARMS FAR * LPMCI_WAVE_SET_PARMS;
856:
857: /*****************************************************************************
858:
859: Standard command parameters for CD audio drivers
860:
861: *****************************************************************************/
862:
863: // None
864:
865: /*****************************************************************************
866:
867: Standard command parameters for Sequencer drivers
868:
869: *****************************************************************************/
870:
871: // string resource ID's for sequencers
872: // return ids for status division type
873:
874: #define MCI_SEQ_DIV_PPQN (0 + MCI_SEQ_OFFSET)
875: #define MCI_SEQ_DIV_SMPTE_24 (1 + MCI_SEQ_OFFSET)
876: #define MCI_SEQ_DIV_SMPTE_25 (2 + MCI_SEQ_OFFSET)
877: #define MCI_SEQ_DIV_SMPTE_30DROP (3 + MCI_SEQ_OFFSET)
878: #define MCI_SEQ_DIV_SMPTE_30 (4 + MCI_SEQ_OFFSET)
879: #define MCI_SEQ_MAPPER_S (5 + MCI_SEQ_OFFSET)
880: #define MCI_SEQ_FILE_S (6 + MCI_SEQ_OFFSET)
881: #define MCI_SEQ_MIDI_S (7 + MCI_SEQ_OFFSET)
882: #define MCI_SEQ_SMPTE_S (8 + MCI_SEQ_OFFSET)
883: #define MCI_SEQ_FORMAT_SONGPTR_S (9 + MCI_SEQ_OFFSET)
884:
885: #define MCI_SEQ_FORMAT_SONGPTR 0x4002
886: #define MCI_SEQ_FILE 0x4003
887: #define MCI_SEQ_MIDI 0x4004
888: #define MCI_SEQ_SMPTE 0x4005
889:
890: #define MCI_SEQ_NONE 65533
891: #define MCI_SEQ_MAPPER 65535
892:
893: #define MCI_SEQ_STATUS_TEMPO 0x00004002L
894: #define MCI_SEQ_STATUS_PORT 0x00004003L
895: #define MCI_SEQ_STATUS_SLAVE 0x00004007L
896: #define MCI_SEQ_STATUS_MASTER 0x00004008L
897: #define MCI_SEQ_STATUS_OFFSET 0x00004009L
898: #define MCI_SEQ_STATUS_DIVTYPE 0x0000400AL
899:
900: #define MCI_SEQ_SET_TEMPO 0x00010000L
901: #define MCI_SEQ_SET_PORT 0x00020000L
902: #define MCI_SEQ_SET_SLAVE 0x00040000L
903: #define MCI_SEQ_SET_MASTER 0x00080000L
904: #define MCI_SEQ_SET_OFFSET 0x01000000L
905:
906: typedef struct {
907: DWORD dwCallback;
908: DWORD dwTimeFormat;
909: DWORD dwAudio;
910: DWORD dwTempo;
911: DWORD dwPort;
912: DWORD dwSlave;
913: DWORD dwMaster;
914: DWORD dwOffset;
915: } MCI_SEQ_SET_PARMS;
916: typedef MCI_SEQ_SET_PARMS FAR * LPMCI_SEQ_SET_PARMS;
917:
918: /*****************************************************************************
919:
920: Standard command parameters for animation
921:
922: *****************************************************************************/
923:
924:
925: #define MCI_ANIM_OPEN_WS 0x00010000L // MCI_OPEN
926: #define MCI_ANIM_OPEN_PARENT 0x00020000L
927: #define MCI_ANIM_OPEN_NOSTATIC 0x00040000L
928:
929: #define MCI_ANIM_PLAY_SPEED 0x00010000L // MCI_PLAY
930: #define MCI_ANIM_PLAY_REVERSE 0x00020000L
931: #define MCI_ANIM_PLAY_FAST 0x00040000L
932: #define MCI_ANIM_PLAY_SLOW 0x00080000L
933: #define MCI_ANIM_PLAY_SCAN 0x00100000L
934:
935: #define MCI_ANIM_STEP_REVERSE 0x00010000L // MCI_STEP
936: #define MCI_ANIM_STEP_FRAMES 0x00020000L
937:
938: #define MCI_ANIM_STATUS_SPEED 0x00004001L // MCI_STATUS
939: #define MCI_ANIM_STATUS_FORWARD 0x00004002L
940: #define MCI_ANIM_STATUS_HWND 0x00004003L
941: #define MCI_ANIM_STATUS_HPAL 0x00004004L
942:
943: #define MCI_ANIM_INFO_TEXT 0x00010000L // MCI_INFO
944:
945: #define MCI_ANIM_GETDEVCAPS_CAN_REVERSE 0x00004001L // MCI_GETDEVCAPS
946: #define MCI_ANIM_GETDEVCAPS_FAST_RATE 0x00004002L
947: #define MCI_ANIM_GETDEVCAPS_SLOW_RATE 0x00004003L
948: #define MCI_ANIM_GETDEVCAPS_NORMAL_RATE 0x00004004L
949: #define MCI_ANIM_GETDEVCAPS_PALETTES 0x00004006L
950: #define MCI_ANIM_GETDEVCAPS_CAN_STRETCH 0x00004007L
951: #define MCI_ANIM_GETDEVCAPS_MAX_WINDOWS 0x00004008L
952:
953: #define MCI_ANIM_REALIZE_NORM 0x00010000L // MCI_REALIZE
954: #define MCI_ANIM_REALIZE_BKGD 0x00020000L
955:
956: #define MCI_ANIM_WINDOW_HWND 0x00010000L // MCI_WINDOW
957: #define MCI_ANIM_WINDOW_DEFAULT 0x00020000L
958: #define MCI_ANIM_WINDOW_STATE 0x00040000L
959: #define MCI_ANIM_WINDOW_TEXT 0x00080000L
960:
961: #define MCI_ANIM_RECT 0x00010000L // MCI_SOURCE,MCI_DESTINATION, MCI_UPDATE
962:
963: #define MCI_ANIM_PUT_SOURCE 0x00020000L // MCI_PUT
964: #define MCI_ANIM_PUT_DESTINATION 0x00040000L
965:
966: #define MCI_ANIM_WHERE_SOURCE 0x00020000L // MCI_WHERE
967: #define MCI_ANIM_WHERE_DESTINATION 0x00040000L
968:
969: #define MCI_ANIM_UPDATE_HDC 0x00020000L // MCI_UPDATE
970:
971: typedef struct {
972: DWORD dwCallback;
973: WORD wDeviceID;
974: WORD wReserved0;
975: LPSTR lpstrDeviceType;
976: LPSTR lpstrElementName;
977: LPSTR lpstrAlias;
978: DWORD dwStyle;
979: WORD hWndParent;
980: WORD wReserved1;
981: } MCI_ANIM_OPEN_PARMS;
982: typedef MCI_ANIM_OPEN_PARMS FAR *LPMCI_ANIM_OPEN_PARMS;
983:
984: typedef struct {
985: DWORD dwCallback;
986: DWORD dwFrom;
987: DWORD dwTo;
988: DWORD dwSpeed;
989: } MCI_ANIM_PLAY_PARMS;
990: typedef MCI_ANIM_PLAY_PARMS FAR *LPMCI_ANIM_PLAY_PARMS;
991:
992: typedef struct {
993: DWORD dwCallback;
994: DWORD dwFrames;
995: } MCI_ANIM_STEP_PARMS;
996: typedef MCI_ANIM_STEP_PARMS FAR *LPMCI_ANIM_STEP_PARMS;
997:
998: typedef struct {
999: DWORD dwCallback;
1000: DWORD dwTimeFormat;
1001: DWORD dwAudio;
1002: } MCI_ANIM_SET_PARMS;
1003: typedef MCI_ANIM_SET_PARMS FAR * LPMCI_ANIM_SET_PARMS;
1004:
1005: typedef struct {
1006: DWORD dwCallback;
1007: WORD hWnd;
1008: WORD wReserved1;
1009: WORD nCmdShow;
1010: WORD wReserved2;
1011: LPSTR lpstrText;
1012: } MCI_ANIM_WINDOW_PARMS;
1013: typedef MCI_ANIM_WINDOW_PARMS FAR * LPMCI_ANIM_WINDOW_PARMS;
1014:
1015: typedef struct {
1016: DWORD dwCallback;
1017: RECT rc;
1018: } MCI_ANIM_RECT_PARMS;
1019: typedef MCI_ANIM_RECT_PARMS FAR * LPMCI_ANIM_RECT_PARMS;
1020:
1021: typedef struct {
1022: DWORD dwCallback;
1023: RECT rc;
1024: HDC hDC;
1025: } MCI_ANIM_UPDATE_PARMS;
1026: typedef MCI_ANIM_UPDATE_PARMS FAR * LPMCI_ANIM_UPDATE_PARMS;
1027:
1028:
1029: /*****************************************************************************
1030:
1031: Standard command parameters for overlay
1032:
1033: *****************************************************************************/
1034:
1035:
1036: #define MCI_OVLY_OPEN_WS 0x00010000L // MCI_OPEN
1037: #define MCI_OVLY_OPEN_PARENT 0x00020000L
1038:
1039: #define MCI_OVLY_STATUS_HWND 0x00004001L
1040:
1041: #define MCI_OVLY_INFO_TEXT 0x00010000L // MCI_INFO
1042:
1043: #define MCI_OVLY_GETDEVCAPS_CAN_STRETCH 0x00004001L
1044: #define MCI_OVLY_GETDEVCAPS_CAN_FREEZE 0x00004002L
1045: #define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS 0x00004003L
1046:
1047: #define MCI_OVLY_WINDOW_HWND 0x00010000L // MCI_WINDOW
1048: #define MCI_OVLY_WINDOW_DEFAULT 0x00020000L
1049: #define MCI_OVLY_WINDOW_STATE 0x00040000L
1050: #define MCI_OVLY_WINDOW_TEXT 0x00080000L
1051:
1052: #define MCI_OVLY_RECT 0x00010000L // MCI_WHERE, MCI_UPDATE, MCI_FREEZE, MCI_UNFREEZE
1053:
1054: #define MCI_OVLY_PUT_SOURCE 0x00020000L // MCI_PUT
1055: #define MCI_OVLY_PUT_DESTINATION 0x00040000L
1056: #define MCI_OVLY_PUT_FRAME 0x00080000L
1057:
1058: #define MCI_OVLY_WHERE_SOURCE 0x00020000L // MCI_WHERE
1059: #define MCI_OVLY_WHERE_DESTINATION 0x00040000L
1060: #define MCI_OVLY_WHERE_FRAME 0x00080000L
1061:
1062: #define MCI_OVLY_UPDATE_HDC 0x00020000L // MCI_UPDATE
1063:
1064: typedef struct {
1065: DWORD dwCallback;
1066: WORD wDeviceID;
1067: WORD wReserved0;
1068: LPSTR lpstrDeviceType;
1069: LPSTR lpstrElementName;
1070: LPSTR lpstrAlias;
1071: DWORD dwStyle;
1072: WORD hWndParent;
1073: WORD wReserved1;
1074: } MCI_OVLY_OPEN_PARMS;
1075: typedef MCI_OVLY_OPEN_PARMS FAR *LPMCI_OVLY_OPEN_PARMS;
1076:
1077: typedef struct {
1078: DWORD dwCallback;
1079: WORD hWnd;
1080: WORD wReserved1;
1081: WORD nCmdShow;
1082: WORD wReserved2;
1083: LPSTR lpstrText;
1084: } MCI_OVLY_WINDOW_PARMS;
1085: typedef MCI_OVLY_WINDOW_PARMS FAR * LPMCI_OVLY_WINDOW_PARMS;
1086:
1087: typedef struct {
1088: DWORD dwCallback;
1089: RECT rc;
1090: } MCI_OVLY_RECT_PARMS;
1091: typedef MCI_OVLY_RECT_PARMS FAR * LPMCI_OVLY_RECT_PARMS;
1092:
1093: typedef struct {
1094: DWORD dwCallback;
1095: RECT rc;
1096: HDC hDC;
1097: } MCI_OVLY_UPDATE_PARMS;
1098: typedef MCI_OVLY_UPDATE_PARMS FAR * LPMCI_OVLY_UPDATE_PARMS;
1099:
1100:
1101: /*****************************************************************************
1102:
1103: MCI support functions
1104:
1105: *****************************************************************************/
1106:
1107:
1108: extern DWORD mciSendCommand (WORD wDeviceID, WORD wMessage,
1109: DWORD dwParam1, DWORD dwParam2);
1110:
1111: extern DWORD mciSendString (LPSTR lpstrCommand,
1112: LPSTR lpstrReturnString,
1113: WORD wReturnLength,
1114: HANDLE hCallback);
1115:
1116: extern WORD mciGetDeviceID (LPSTR lpstrName);
1117:
1118: extern WORD mciGetDeviceIDFromElementID (DWORD dwElementID,
1119: LPSTR lpstrType);
1120:
1121: extern WORD mciGetErrorString (DWORD wError,
1122: LPSTR lpstrBuffer,
1123: WORD wLength);
1124:
1125: extern BOOL mciExecute (LPSTR lpstrCommand);
1126:
1127:
1128:
1129: #endif // _WINMM_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.