|
|
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.