home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v6.zip / MMPM2TK / TK / H / MMSYSTEM.H < prev    next >
C/C++ Source or Header  |  1993-04-23  |  111KB  |  2,006 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /* Module Name: MMSYSTEM.H                                                  */
  4. /*                                                                          */
  5. /* This is the multimedia include file that has the typedefs, defines and   */
  6. /* function prototyes for Media Control Interface of MMPM/2 (tm)            */
  7. /*                                                                          */
  8. /* Copyright (c) International Business Machines Corporation 1991, 1992     */
  9. /*                        All Rights Reserved                               */
  10. /*                                                                          */
  11. /****************************************************************************/
  12. #define MCI_TRUE                        1
  13. #define MCI_FALSE                       0
  14.  
  15. /*********************************************************************/
  16. /*                                                                   */
  17. /*             MCI command message identifiers                       */
  18. /*                                                                   */
  19. /*********************************************************************/
  20. #define MCI_OPEN                        1
  21. #define MCI_CLOSE                       2
  22. #define MCI_ESCAPE                      3
  23. #define MCI_PLAY                        4
  24. #define MCI_SEEK                        5
  25. #define MCI_STOP                        6
  26. #define MCI_PAUSE                       7
  27. #define MCI_INFO                        8
  28. #define MCI_GETDEVCAPS                  9
  29. #define MCI_STATUS                      10
  30. #define MCI_SPIN                        11
  31. #define MCI_SET                         12
  32. #define MCI_STEP                        13
  33. #define MCI_RECORD                      14
  34. #define MCI_SYSINFO                     15
  35. #define MCI_SAVE                        16
  36. #define MCI_CUE                         17
  37. #define MCI_UPDATE                      18
  38. #define MCI_SET_CUEPOINT                19
  39. #define MCI_SET_POSITION_ADVISE         20
  40. #define MCI_SET_SYNC_OFFSET             21
  41. #define MCI_LOAD                        22
  42. #define MCI_ACQUIREDEVICE               23
  43. #define MCI_RELEASEDEVICE               24
  44. #define MCI_MASTERAUDIO                 25
  45. #define MCI_GETTOC                      26
  46. #define MCI_DEVICESETTINGS              27
  47. #define MCI_CONNECTOR                   28
  48. #define MCI_RESUME                      29
  49. #define MCI_CONNECTORINFO               31
  50. #define MCI_DEFAULT_CONNECTION          32
  51. #define MCI_CONNECTION                  33
  52. #define MCI_GROUP                       34
  53.  
  54.    /*************************************************/
  55.    /* MCI command message identifiers reserved for  */
  56.    /*  Digital Video and Video Overlay              */
  57.    /*************************************************/
  58.  
  59. #define MCI_CAPTURE                     40
  60. #define MCI_FREEZE                      41
  61. #define MCI_GETIMAGEBUFFER              42
  62. #define MCI_GETIMAGEPALETTE             43
  63. #define MCI_PUT                         44
  64. #define MCI_REALIZE                     45
  65. #define MCI_REWIND                      46
  66. #define MCI_RESTORE                     47
  67. #define MCI_SETIMAGEBUFFER              48
  68. #define MCI_SETIMAGEPALETTE             49
  69. #define MCI_UNFREEZE                    50
  70. #define MCI_WHERE                       51
  71. #define MCI_WINDOW                      52
  72.  
  73. #define MCI_DELETE                      53
  74. #define MCI_CUT                         54
  75. #define MCI_PASTE                       55
  76. #define MCI_COPY                        56
  77. #define MCI_REDO                        57
  78. #define MCI_UNDO                        58
  79. #define MCI_MAX_COMMAND                 58
  80.  
  81. #define RECT                            DWORD
  82. #define HDCT                            DWORD
  83. /*********************************************************************/
  84. /* this and all subsequent message ID's are reserved for the user    */
  85. /*********************************************************************/
  86. #define MCI_USER_MESSAGES               2000
  87.  
  88. /*********************************************************************/
  89. /* Special Device ID for "all"                                       */
  90. /*********************************************************************/
  91. #define MCI_ALL_DEVICE_ID               0xFFFF
  92.  
  93. /*********************************************************************/
  94. /* MCI implementation limits                                         */
  95. /*********************************************************************/
  96. #define MAX_DEVICE_NAME                 20
  97. #define MAX_ALIAS_NAME                  20
  98. #define MAX_PRODINFO                    40
  99. #define MAX_EXTENSION_NAME              4
  100. #define MAX_DEV_PARAMS                  128
  101. #define MAX_VERSION_NUMBER              6
  102. #define MAX_PDD_NAME                    9
  103. #define MAX_DLL_NAME                    260
  104. #define MAX_CLASSES                     10
  105. #define MAX_CONNECTORS                  10
  106. #define MAX_EXTENSIONS                  25
  107. #define MAX_TYPEBUFFER                  256
  108.  
  109. #ifdef INCL_32
  110. /*********************************************************************/
  111. /* MCI Device Type Constants                                         */
  112. /*********************************************************************/
  113. #define MCI_DEVTYPE_VIDEOTAPE           1
  114. #define MCI_DEVTYPE_VIDEODISC           2
  115. #define MCI_DEVTYPE_CD_AUDIO            3
  116. #define MCI_DEVTYPE_DAT                 4
  117. #define MCI_DEVTYPE_AUDIO_TAPE          5
  118. #define MCI_DEVTYPE_OTHER               6
  119. #define MCI_DEVTYPE_WAVEFORM_AUDIO      7
  120. #define MCI_DEVTYPE_SEQUENCER           8
  121. #define MCI_DEVTYPE_AUDIO_AMPMIX        9
  122. #define MCI_DEVTYPE_OVERLAY             10
  123. #define MCI_DEVTYPE_ANIMATION           11
  124. #define MCI_DEVTYPE_DIGITAL_VIDEO       12
  125. #define MCI_DEVTYPE_SPEAKER             13
  126. #define MCI_DEVTYPE_HEADPHONE           14
  127. #define MCI_DEVTYPE_MICROPHONE          15
  128. #define MCI_DEVTYPE_MONITOR             16
  129. #define MCI_DEVTYPE_CDXA                17
  130.  
  131. /*********************************************************************/
  132. /* MCI Device Type Names                                             */
  133. /*********************************************************************/
  134. #define MCI_DEVTYPE_VIDEOTAPE_NAME          "Videotape"
  135. #define MCI_DEVTYPE_VIDEODISC_NAME          "Videodisc"
  136. #define MCI_DEVTYPE_CD_AUDIO_NAME           "CDaudio"
  137. #define MCI_DEVTYPE_DAT_NAME                "DAT"
  138. #define MCI_DEVTYPE_AUDIO_TAPE_NAME         "Audiotape"
  139. #define MCI_DEVTYPE_OTHER_NAME              "Other"
  140. #define MCI_DEVTYPE_WAVEFORM_AUDIO_NAME     "Waveaudio"
  141. #define MCI_DEVTYPE_SEQUENCER_NAME          "Sequencer"
  142. #define MCI_DEVTYPE_AUDIO_AMPMIX_NAME       "Ampmix"
  143. #define MCI_DEVTYPE_OVERLAY_NAME            "Overlay"
  144. #define MCI_DEVTYPE_ANIMATION_NAME          "Animation"
  145. #define MCI_DEVTYPE_DIGITAL_VIDEO_NAME      "Digitalvideo"
  146. #define MCI_DEVTYPE_SPEAKER_NAME            "Speaker"
  147. #define MCI_DEVTYPE_HEADPHONE_NAME          "Headphone"
  148. #define MCI_DEVTYPE_MICROPHONE_NAME         "Microphone"
  149. #define MCI_DEVTYPE_MONITOR_NAME            "Monitor"
  150. #define MCI_DEVTYPE_CDXA_NAME               "CDXA"
  151.  
  152. #define MCI_MAX_SYSTEM_DEVICE_NAMES         17
  153.  
  154. #endif                       /* INCL_32 */
  155.  
  156. /*********************************************************************/
  157. /* Getdevcaps, set, and status item base values                      */
  158. /*********************************************************************/
  159.  
  160. #define MCI_AMP_ITEM_BASE                   0x00001000L
  161. #define MCI_CD_ITEM_BASE                    0x00002000L
  162. #define MCI_CDXA_ITEM_BASE                  0x00003000L
  163. #define MCI_VD_ITEM_BASE                    0x00004000L
  164. #define MCI_SEQ_ITEM_BASE                   0x00005000L
  165. #define MCI_WAVE_ITEM_BASE                  0x00006000L
  166. #define MCI_VID_ITEM_BASE                   0x00007000L
  167. #define MCI_DGV_ITEM_BASE                   0x00008000L
  168. #define MCI_OVLY_ITEM_BASE                  0x00009000L
  169.  
  170. /*********************************************************************/
  171. /* Flags for mciDriverNotify                                         */
  172. /*********************************************************************/
  173. #define MCI_NOTIFY_SUCCESSFUL               0x0000
  174. #define MCI_NOTIFY_SUPERSEDED               0x0001
  175. #define MCI_NOTIFY_ABORTED                  0x0002
  176. #define MCI_NOTIFY_ERROR                    0x0003
  177.  
  178. /*********************************************************************/
  179. /* mciDriverNotify  Message Types                                    */
  180. /*********************************************************************/
  181. #define MM_MCINOTIFY                        0x0500
  182. #define MM_MCIPASSDEVICE                    0x0501
  183. #define MM_MCIPOSITIONCHANGE                0x0502
  184. #define MM_MCICUEPOINT                      0x0503
  185. #define MM_MCIPLAYLISTMESSAGE               0x0504
  186. #define MM_MCIEVENT                         0x0505
  187. #define MM_MCISYNCH                         0x0506
  188.  
  189. #define MCI_LOSING_USE                      0x00000001L
  190. #define MCI_GAINING_USE                     0x00000002L
  191.  
  192. /*********************************************************************/
  193. /* Common message flags                                              */
  194. /*     0x000000XX are reserved for common flags                      */
  195. /*********************************************************************/
  196. #define MCI_NOTIFY                          0x00000001L
  197. #define MCI_WAIT                            0x00000002L
  198. #define MCI_FROM                            0x00000004L
  199. #define MCI_TO                              0x00000008L
  200. #define MCI_MILLISECONDS                    0x00000010L
  201. #define MCI_TRACK                           0x00000020L
  202. #define MCI_OVER                            0x00000040L
  203. #define MCI_TEST                            0x00000080L
  204. #define MCI_TO_BUFFER                       0x00000100L
  205. #define MCI_FROM_BUFFER                     0x00000200L
  206. #define MCI_CONVERT_FORMAT                  0x00000400L
  207.  
  208.  
  209. /*********************************************************************/
  210. /* Time formats                                                      */
  211. /*********************************************************************/
  212. #define MCI_FORMAT_MILLISECONDS             0x00000001L
  213. #define MCI_FORMAT_MMTIME                   0x00000002L
  214. #define MCI_FORMAT_MSF                      0x00000005L
  215. #define MCI_FORMAT_TMSF                     0x00000006L
  216. #define MCI_FORMAT_CHAPTERS                 0x00000007L
  217. #define MCI_FORMAT_FRAMES                   0x00000008L
  218. #define MCI_FORMAT_HMS                      0x00000009L
  219. #define MCI_FORMAT_TRACKS                   0x0000000AL
  220. #define MCI_FORMAT_BYTES                    0x0000000BL
  221. #define MCI_FORMAT_SAMPLES                  0x0000000CL
  222. #define MCI_FORMAT_HMSF                     0x0000000DL
  223. #define MCI_FORMAT_SET_SMPTE_24             0x0000000EL
  224. #define MCI_FORMAT_SET_SMPTE_25             0x0000000FL
  225. #define MCI_FORMAT_SET_SMPTE_30             0x00000010L
  226. #define MCI_FORMAT_SET_SMPTE_30DROP         0x00000011L
  227. #define MCI_FORMAT_SET_SONGPTR              0x00000012L
  228.  
  229. /*********************************************************************/
  230. /* Speed formats                                                     */
  231. /*********************************************************************/
  232. #define MCI_FORMAT_PERCENTAGE               0x00000003L
  233. #define MCI_FORMAT_FPS                      0x00000004L
  234.  
  235.  
  236. /*********************************************************************/
  237. /*                                                                   */
  238. /*  Time format conversions macros                                   */
  239. /*                                                                   */
  240. /*********************************************************************/
  241. #define MSECTOMM(value)      (((value) > (0xFFFFFFFF /3)) ? 0L : \
  242.                               ((value) * 3))
  243.  
  244. #define MSECFROMMM(value)    (((value)+1) / 3)
  245.  
  246. #define REDBOOKTOMM(value)   ((((value) & 0x000000FF) * 60 * 3000) + \
  247.                               (((value) & 0x0000FF00) / 0x100 * 3000) + \
  248.                               (((value) & 0x00FF0000) / 0x10000 * 3000/75))
  249.  
  250. #define FPS24TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  251.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  252.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  253.                           (((value) & 0xFF000000) / 0x1000000 * 3000/24))
  254.  
  255. #define FPS25TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  256.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  257.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  258.                           (((value) & 0xFF000000) / 0x1000000 * 3000/25))
  259.  
  260. #define FPS30TOMM(value) ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  261.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  262.                           (((value) & 0x00FF0000) / 0x10000 * 3000) + \
  263.                           (((value) & 0xFF000000) / 0x1000000 * 3000/30))
  264.  
  265. #define HMSTOMM(value)   ((((value) & 0x000000FF) * 60 * 60 * 3000) + \
  266.                           (((value) & 0x0000FF00) / 0x100 * 60 * 3000) + \
  267.                           (((value) & 0x00FF0000) / 0x10000 * 3000))
  268.  
  269.  
  270.   /* The +20 is used for rounding purposes.  It is derived by:           */
  271.   /*   1/2 * ((300 MMTIME/SEC / (75 FRAMES/SEC)) = 20 MMTIME/HALF-FRAME  */
  272. #define REDBOOKFROMMM(value) ((((value)+20) >= 0x100*60*3000) ? 0L : \
  273.                               ((((value)+20) / (60*3000)) + \
  274.                                (((value)+20) % (60*3000) / 3000 << 8) + \
  275.                                (((value)+20) / (3000/75) % 75 << 16)))
  276.  
  277. #define FPS24FROMMM(value) ((((value)+63) >= 0x100*60*60*3000) ? 0L : \
  278.                         (((((((value)+63) % 3000)/(3000/24)) << 24) & 0xFF000000) | \
  279.                          ((((((value)+63) / 3000) % 60) << 16) & 0x00FF0000)      | \
  280.                         (((((((value)+63) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  281.                          ((((((value)+63) / 3000) / 60) / 60)  & 0x000000FF)))
  282.  
  283. #define FPS25FROMMM(value) ((((value)+60) >= 0x100*60*60*3000) ? 0L : \
  284.                         (((((((value)+60) % 3000)/(3000/25)) << 24) & 0xFF000000) | \
  285.                          ((((((value)+60) / 3000) % 60) << 16) & 0x00FF0000)      | \
  286.                         (((((((value)+60) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  287.                          ((((((value)+60) / 3000) / 60) / 60)  & 0x000000FF)))
  288.  
  289. #define FPS30FROMMM(value) ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  290.                         (((((((value)+50) % 3000)/(3000/30)) << 24) & 0xFF000000) | \
  291.                          ((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  292.                         (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  293.                          ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  294.  
  295. #define HMSFROMMM(value) ((((value)+50) >= 0x100*60*60*3000) ? 0L : \
  296.                         (((((((value)+50) / 3000) % 60) << 16) & 0x00FF0000)      | \
  297.                         (((((((value)+50) / 3000) / 60) % 60) << 8) & 0x0000FF00) | \
  298.                          ((((((value)+50) / 3000) / 60) / 60)  & 0x000000FF)))
  299.  
  300. #define TMSF_TRACK(time)     (*(BYTE *)(&(time)))
  301. #define TMSF_MINUTE(time)    (*((BYTE *)(&(time))+1))
  302. #define TMSF_SECOND(time)    (*((BYTE *)(&(time))+2))
  303. #define TMSF_FRAME(time)     (*((BYTE *)(&(time))+3))
  304. #define MSF_MINUTE(time)     (*(BYTE *)(&(time)))
  305. #define MSF_SECOND(time)     (*((BYTE *)(&(time))+1))
  306. #define MSF_FRAME(time)      (*((BYTE *)(&(time))+2))
  307.  
  308. /*********************************************************************/
  309. /*                                                                   */
  310. /*  BYTE ACCESS WITH A DWORD MACROS                                  */
  311. /*                                                                   */
  312. /*********************************************************************/
  313. #define DWORD_LWLB(dw)    (*(BYTE *)((DWORD *)(&dw)))     /* Low  Word Low Byte  */
  314. #define DWORD_LWHB(dw)    (*((BYTE *)((DWORD *)(&dw))+1)) /* Low  Word High Byte */
  315. #define DWORD_HWLB(dw)    (*((BYTE *)((DWORD *)(&dw))+2)) /* High Word Low Byte  */
  316. #define DWORD_HWHB(dw)    (*((BYTE *)((DWORD *)(&dw))+3)) /* High Word High Byte */
  317. #define DWORD_LOWD(dw)    (*(WORD *)((DWORD *)(&dw)))     /* Low  Word           */
  318. #define DWORD_HIWD(dw)    (*((WORD *)((DWORD *)(&dw))+1)) /* High Word           */
  319.  
  320. #ifdef INCL_32
  321.  
  322. #pragma pack(1)
  323.  
  324. /*********************************************************************/
  325. /* parameters for default command messages with empty parameter lists*/
  326. /*********************************************************************/
  327. typedef struct _MCI_GENERIC_PARMS {
  328.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  329. } MCI_GENERIC_PARMS;
  330. typedef MCI_GENERIC_PARMS   *LPMCI_GENERIC_PARMS;
  331.  
  332.  
  333. /*********************************************************************/
  334. /* flags for the MCI_ACQUIREDEVICE message                           */
  335. /*     0x00000X00 are reserved for MCI_ACQUIREDEVICE flags           */
  336. /*********************************************************************/
  337. #define MCI_EXCLUSIVE                       0x00000100L
  338. #define MCI_EXCLUSIVE_INSTANCE              0x00000200L
  339. #define MCI_ACQUIRE_QUEUE                   0x00000400L
  340.  
  341.  
  342. /*********************************************************************/
  343. /* flags for the MCI_CAPTURE message                                 */
  344. /*     0x0000XX00 are reserved for MCI_CAPTURE flags                 */
  345. /*     MCI_CONVERT is used by MCI_GETIMAGEBUFFER, MCI_SETIMAGEBUFFER */
  346. /*                            MCI_CAPTURE, and MCI_RESTORE           */
  347. /*********************************************************************/
  348. #define MCI_CAPTURE_RECT                    0x00000100L
  349. #define MCI_CONVERT                         0x00001000L
  350.  
  351. /*********************************************************************/
  352. /* parameter structure for the MCI_CAPTURE message                   */
  353. /*********************************************************************/
  354. typedef struct _MCI_CAPTURE_PARMS {
  355.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  356.     RECTL   rect;            /* Rectangle array specifying the area to  */
  357.                              /* be captured                             */
  358. } MCI_CAPTURE_PARMS;
  359. typedef MCI_CAPTURE_PARMS   *LPMCI_CAPTURE_PARMS;
  360.  
  361.  
  362. /*********************************************************************/
  363. /* flags for MCI_CONNECTOR and MCI_CONNECTION messages               */
  364. /*********************************************************************/
  365. #define MCI_ENABLE_CONNECTOR                0x00000100L
  366. #define MCI_DISABLE_CONNECTOR               0x00000200L
  367. #define MCI_QUERY_CONNECTOR_STATUS          0x00000400L
  368. #define MCI_CONNECTOR_TYPE                  0x00000800L
  369. #define MCI_CONNECTOR_INDEX                 0x00001000L
  370. #define MCI_TO_CONNECTOR_INDEX              0x00002000L
  371. #define MCI_TO_CONNECTOR_TYPE               0x00004000L
  372. #define MCI_QUERY_CONNECTION                0x00008000L
  373. #define MCI_MAKE_CONNECTION                 0x00010000L
  374. #define MCI_BREAK_CONNECTION                0x00020000L
  375. #define MCI_ENUMERATE_CONNECTORS            0x00040000L
  376. #define MCI_QUERY_CONNECTOR_TYPE            0x00080000L
  377. #define MCI_QUERY_VALID_CONNECTION          0x00100000L
  378. #define MCI_CONNECTOR_ALIAS                 0x00200000L
  379.  
  380.  
  381. /*********************************************************************/
  382. /* Connector types                                                   */
  383. /*********************************************************************/
  384. #define MCI_MIDI_STREAM_CONNECTOR           0x00000001L
  385. #define MCI_CD_STREAM_CONNECTOR             0x00000002L
  386. #define MCI_WAVE_STREAM_CONNECTOR           0x00000003L
  387. #define MCI_AMP_STREAM_CONNECTOR            0x00000004L
  388. #define MCI_XA_STREAM_CONNECTOR             0x00000005L
  389. #define MCI_HEADPHONES_CONNECTOR            0x00000006L
  390. #define MCI_SPEAKERS_CONNECTOR              0x00000007L
  391. #define MCI_MICROPHONE_CONNECTOR            0x00000008L
  392. #define MCI_LINE_IN_CONNECTOR               0x00000009L
  393. #define MCI_LINE_OUT_CONNECTOR              0x0000000aL
  394. #define MCI_VIDEO_IN_CONNECTOR              0x0000000bL
  395. #define MCI_VIDEO_OUT_CONNECTOR             0x0000000cL
  396. #define MCI_PHONE_SET_CONNECTOR             0x0000000dL
  397. #define MCI_PHONE_LINE_CONNECTOR            0x0000000eL
  398. #define MCI_AUDIO_IN_CONNECTOR              0x0000000fL
  399. #define MCI_AUDIO_OUT_CONNECTOR             0x00000010L
  400. #define MCI_UNIVERSAL_CONNECTOR             0x00000011L
  401.  
  402. /*********************************************************************/
  403. /* parameter structure for the MCI_CONNECTION message                */
  404. /*********************************************************************/
  405. typedef struct _MCI_CONNECTION_PARMS {
  406.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  407.     DWORD   dwConnectorType; /* Connector type                          */
  408.     DWORD   dwConnectorIndex;/* Connector index                         */
  409.     LPSTR   lpstrAlias;      /* Connection device alias                 */
  410.     WORD    wToDeviceID;     /* Connected to device ID                  */
  411.     WORD    wReserved0;      /* Reserved field                          */
  412.     DWORD   dwReserved1;     /* Reserved field                          */
  413.     DWORD   dwReserved2;     /* Reserved field                          */
  414. } MCI_CONNECTION_PARMS;
  415. typedef MCI_CONNECTION_PARMS   *LPMCI_CONNECTION_PARMS;
  416.  
  417. /*********************************************************************/
  418. /* parameter structure for the MCI_CONNECTOR message                 */
  419. /*********************************************************************/
  420. typedef struct _MCI_CONNECTOR_PARMS {
  421.     DWORD  dwCallback;       /* PM window handle for MCI notify message    */
  422.     DWORD  dwReturn;         /* Return information                         */
  423.     DWORD  dwConnectorType;  /* If specified, dwConnectorIndex is relative */
  424.                              /* to the specified connector type            */
  425.     DWORD  dwConnectorIndex; /* Connector number                           */
  426. } MCI_CONNECTOR_PARMS;
  427. typedef MCI_CONNECTOR_PARMS   *LPMCI_CONNECTOR_PARMS;
  428.  
  429. /*********************************************************************/
  430. /* parameter structure for the MCI_CONNECTORINFO message             */
  431. /*********************************************************************/
  432. typedef struct _MCI_CONNECTORINFO_PARMS {
  433.     DWORD  dwCallback;       /* PM window handle for MCI notify message    */
  434.     DWORD  dwReturn;         /* Return information                         */
  435.     DWORD  dwDeviceTypeID;   /* MCI device type                            */
  436.     DWORD  dwConnectorType;  /* If specified, dwConnectorIndex is relative */
  437.                              /* to the specified connector type            */
  438.     DWORD  dwConnectorIndex; /* Connector number                           */
  439.     DWORD  dwToConnectorType;   /* Connector type to test if               */
  440.                                 /* MCI_QUERY_VALID_CONNECTION is specified */
  441. } MCI_CONNECTORINFO_PARMS;
  442. typedef MCI_CONNECTORINFO_PARMS   *LPMCI_CONNECTORINFO_PARMS;
  443.  
  444. /*********************************************************************/
  445. /* flags for the MCI_CUE message                                     */
  446. /*     0x00000x00 are reserved for MCI_CUE flags                     */
  447. /*********************************************************************/
  448. #define MCI_CUE_INPUT                       0x00000100L
  449. #define MCI_CUE_OUTPUT                      0x00000200L
  450.  
  451.     /*************************************************/
  452.     /* Additional flags for Wave Audio for MCI_CUE   */
  453.     /*************************************************/
  454. #define MCI_WAVE_INPUT                      0x00001000L
  455. #define MCI_WAVE_OUTPUT                     0x00002000L
  456.  
  457.  
  458. /*********************************************************************/
  459. /* parameter structure for the MCI_DEFAULT_CONNECTION message        */
  460. /*********************************************************************/
  461. typedef struct _MCI_DEFAULT_CONNECTION_PARMS {
  462.     DWORD dwCallback;        /* PM window handle for MCI notify message    */
  463.     PSZ   pszDevice;         /* Device name                                */
  464.     DWORD dwConnectorType;   /* If specified, dwConnectorIndex is relative */
  465.                              /* to the specified connector type            */
  466.     DWORD dwConnectorIndex;  /* Connector number                           */
  467.     PSZ   pszToDevice;       /* Return device name to which the connection */
  468.                              /* exists                                     */
  469.     DWORD dwToConnectorType; /* Connector type                             */
  470.     DWORD dwToConnectorIndex;   /* Connector number                        */
  471. } MCI_DEFAULT_CONNECTION_PARMS;
  472. typedef MCI_DEFAULT_CONNECTION_PARMS   *LPMCI_DEFAULT_CONNECTION_PARMS;
  473.  
  474. /*********************************************************************/
  475. /* parameter structure for the MCI_DEVICESETTINGS message            */
  476. /*********************************************************************/
  477. typedef struct _MCI_DEVICESETTINGS_PARMS {
  478.     DWORD   dwCallback;      /* PM window handle for MCI notify message    */
  479.     HWND    hwndNotebook;    /* Hwhd to notebook window                    */
  480.     USHORT  usDeviceType;    /* Device type                                */
  481.     PSZ     pszDeviceName;   /* Device name                                */
  482. } MCI_DEVICESETTINGS_PARMS;
  483. typedef MCI_DEVICESETTINGS_PARMS   *LPMCI_DEVICESETTINGS_PARMS;
  484.  
  485. /**********************************************************************/
  486. /* parameter structure for the MCI_CUT / COPY / DELETE / UNDO / etc...*/
  487. /**********************************************************************/
  488. typedef struct _MCI_EDIT_PARMS {
  489.     ULONG   ulCallback;      /* PM window handle for MCI notify message     */
  490.     ULONG   ulStructLen;     /* Length of the Structure                     */
  491.     ULONG   ulFrom;          /* Beginning Point of Range                    */
  492.     ULONG   ulTo;            /* ending point of range                       */
  493.     PVOID   pBuff;           /* user buffer                                 */
  494.     ULONG   ulBufLen;        /* length of user buffer                       */
  495.     PVOID   pHeader;         /* header which describes the buffer           */
  496. } MCI_EDIT_PARMS;
  497. typedef MCI_EDIT_PARMS   *PMCI_EDIT_PARMS;
  498.  
  499. /*********************************************************************/
  500. /* flags and parameter structure for the MCI_ESCAPE message          */
  501. /*     0x00000X00 are reserved for MCI_ESCAPE flags                  */
  502. /*********************************************************************/
  503. #define MCI_ESCAPE_STRING                   0x00000100L
  504.  
  505. typedef struct _MCI_ESCAPE_PARMS {
  506.     DWORD   dwCallback;      /* PM window handle for MCI notify message    */
  507.     LPSTR   lpstrCommand;    /* Command to send to the device              */
  508. } MCI_ESCAPE_PARMS;
  509. typedef MCI_ESCAPE_PARMS   *LPMCI_ESCAPE_PARMS;
  510.  
  511. /*********************************************************************/
  512. /* flags for the MCI_FREEZE message                                  */
  513. /*     0x0000XX00 are reserved for MCI_FREEZE flags                  */
  514. /*********************************************************************/
  515. #define MCI_OVLY_FREEZE_RECT                0x00000100L
  516. #define MCI_OVLY_FREEZE_RECT_OUTSIDE        0x00000200L
  517.  
  518. /*********************************************************************/
  519. /* flags for the MCI_GETDEVCAPS message                              */
  520. /*     0x00XXXX00 are reserved for MCI_GETDEVCAPS flags              */
  521. /*********************************************************************/
  522. #define MCI_GETDEVCAPS_MESSAGE              0x00000100L
  523. #define MCI_GETDEVCAPS_ITEM                 0x00000200L
  524. #define MCI_GETDEVCAPS_EXTENDED             0x00000400L
  525.  
  526.    /*************************************************/
  527.    /* General MCI_GETDEVCAPS item values            */
  528.    /*************************************************/
  529. #define MCI_GETDEVCAPS_CAN_EJECT            0x00000001L
  530. #define MCI_GETDEVCAPS_CAN_LOCKEJECT        0x00000002L
  531. #define MCI_GETDEVCAPS_CAN_PLAY             0x00000003L
  532. #define MCI_GETDEVCAPS_CAN_PROCESS_INTERNAL 0x00000004L
  533. #define MCI_GETDEVCAPS_CAN_RECORD           0x00000005L
  534. #define MCI_GETDEVCAPS_CAN_RECORD_INSERT    0x00000006L
  535. #define MCI_GETDEVCAPS_CAN_SAVE             0x00000007L
  536. #define MCI_GETDEVCAPS_CAN_SETVOLUME        0x00000008L
  537. #define MCI_GETDEVCAPS_CAN_STREAM           0x00000009L
  538. #define MCI_GETDEVCAPS_DEVICE_TYPE          0x0000000AL
  539. #define MCI_GETDEVCAPS_HAS_AUDIO            0x0000000BL
  540. #define MCI_GETDEVCAPS_HAS_VIDEO            0x0000000CL
  541. #define MCI_GETDEVCAPS_PREROLL_TIME         0x0000000DL
  542. #define MCI_GETDEVCAPS_PREROLL_TYPE         0x0000000EL
  543. #define MCI_GETDEVCAPS_USES_FILES           0x0000000FL
  544. #define MCI_GETDEVCAPS_HAS_IMAGE            0x00000010L
  545. #define MCI_GETDEVCAPS_WAVE_FORMAT          0x00000011L
  546.  
  547.     /***********************************************/
  548.     /* return ID's for videodisc MCI_GETDEVCAPS    */
  549.     /***********************************************/
  550. #define MCI_VD_MEDIA_CLV                    0x00000001L
  551. #define MCI_VD_MEDIA_CAV                    0x00000002L
  552. #define MCI_VD_MEDIA_OTHER                  0x00000003L
  553.  
  554.     /*************************************************/
  555.     /* MCI_GETDEVCAPS item values for video devices  */
  556.     /*************************************************/
  557. #define MCI_VID_GETDEVCAPS_CAN_STRETCH       MCI_VID_ITEM_BASE
  558. #define MCI_VID_GETDEVCAPS_CAN_DISTORT       (MCI_VID_ITEM_BASE+1)
  559. #define MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT    (MCI_VID_ITEM_BASE+2)
  560. #define MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT    (MCI_VID_ITEM_BASE+3)
  561. #define MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT    (MCI_VID_ITEM_BASE+4)
  562. #define MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT    (MCI_VID_ITEM_BASE+5)
  563. #define MCI_VID_GETDEVCAPS_MAX_WINDOWS       (MCI_VID_ITEM_BASE+6)
  564. #define MCI_VID_GETDEVCAPS_CAN_FREEZE        (MCI_VID_ITEM_BASE+7)
  565. #define MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS  (MCI_VID_ITEM_BASE+8)
  566.  
  567. #define MCI_VID_GETDEVCAPS_CAN_REVERSE       (MCI_VID_ITEM_BASE+9)
  568. #define MCI_VID_GETDEVCAPS_FAST_RATE         (MCI_VID_ITEM_BASE+10)
  569. #define MCI_VID_GETDEVCAPS_SLOW_RATE         (MCI_VID_ITEM_BASE+11)
  570. #define MCI_VID_GETDEVCAPS_NORMAL_RATE       (MCI_VID_ITEM_BASE+12)
  571. #define MCI_VID_GETDEVCAPS_MINIMUM_RATE      (MCI_VID_ITEM_BASE+13)
  572. #define MCI_VID_GETDEVCAPS_MAXIMUM_RATE      (MCI_VID_ITEM_BASE+14)
  573.  
  574.     /*************************************************/
  575.     /* MCI_GETDEVCAPS flag values for Videodisc      */
  576.     /*************************************************/
  577. #define MCI_VD_GETDEVCAPS_CLV               0x00000400L
  578. #define MCI_VD_GETDEVCAPS_CAV               0x00000800L
  579.  
  580.     /*************************************************/
  581.     /* MCI_GETDEVCAPS item values for Videodisc      */
  582.     /*************************************************/
  583.  
  584. #define MCI_VD_GETDEVCAPS_CAN_REVERSE       MCI_VID_GETDEVCAPS_CAN_REVERSE
  585. #define MCI_VD_GETDEVCAPS_FAST_RATE         MCI_VID_GETDEVCAPS_FAST_RATE
  586. #define MCI_VD_GETDEVCAPS_SLOW_RATE         MCI_VID_GETDEVCAPS_SLOW_RATE
  587. #define MCI_VD_GETDEVCAPS_NORMAL_RATE       MCI_VID_GETDEVCAPS_NORMAL_RATE
  588. #define MCI_VD_GETDEVCAPS_MINIMUM_RATE      MCI_VID_GETDEVCAPS_MINIMUM_RATE
  589. #define MCI_VD_GETDEVCAPS_MAXIMUM_RATE      MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  590.  
  591.     /************************************************/
  592.     /* MCI_GETDEVCAPS item values for Digital Video */
  593.     /************************************************/
  594. #define MCI_DGV_GETDEVCAPS_CAN_REVERSE      MCI_VID_GETDEVCAPS_CAN_REVERSE
  595. #define MCI_DGV_GETDEVCAPS_CAN_STRETCH      MCI_VID_GETDEVCAPS_CAN_STRETCH
  596. #define MCI_DGV_GETDEVCAPS_CAN_DISTORT      MCI_VID_GETDEVCAPS_CAN_DISTORT
  597. #define MCI_DGV_GETDEVCAPS_FAST_RATE        MCI_VID_GETDEVCAPS_FAST_RATE
  598. #define MCI_DGV_GETDEVCAPS_SLOW_RATE        MCI_VID_GETDEVCAPS_SLOW_RATE
  599. #define MCI_DGV_GETDEVCAPS_NORMAL_RATE      MCI_VID_GETDEVCAPS_NORMAL_RATE
  600. #define MCI_DGV_GETDEVCAPS_MINIMUM_RATE     MCI_VID_GETDEVCAPS_MINIMUM_RATE
  601. #define MCI_DGV_GETDEVCAPS_MAXIMUM_RATE     MCI_VID_GETDEVCAPS_MAXIMUM_RATE
  602. #define MCI_DGV_GETDEVCAPS_VIDEO_X_EXTENT   MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  603. #define MCI_DGV_GETDEVCAPS_VIDEO_Y_EXTENT   MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  604. #define MCI_DGV_GETDEVCAPS_IMAGE_X_EXTENT   MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  605. #define MCI_DGV_GETDEVCAPS_IMAGE_Y_EXTENT   MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  606. #define MCI_DGV_GETDEVCAPS_MAX_WINDOWS      MCI_VID_GETDEVCAPS_MAX_WINDOWS
  607. #define MCI_DGV_GETDEVCAPS_OVERLAY_GRAPHICS MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  608.  
  609.    /*************************************************/
  610.    /* MCI_GETDEVCAPS item values for Video Overlay  */
  611.    /*************************************************/
  612. #define MCI_OVLY_GETDEVCAPS_CAN_STRETCH     MCI_VID_GETDEVCAPS_CAN_STRETCH
  613. #define MCI_OVLY_GETDEVCAPS_CAN_DISTORT     MCI_VID_GETDEVCAPS_CAN_DISTORT
  614. #define MCI_OVLY_GETDEVCAPS_VIDEO_X_EXTENT  MCI_VID_GETDEVCAPS_VIDEO_X_EXTENT
  615. #define MCI_OVLY_GETDEVCAPS_VIDEO_Y_EXTENT  MCI_VID_GETDEVCAPS_VIDEO_Y_EXTENT
  616. #define MCI_OVLY_GETDEVCAPS_IMAGE_X_EXTENT  MCI_VID_GETDEVCAPS_IMAGE_X_EXTENT
  617. #define MCI_OVLY_GETDEVCAPS_IMAGE_Y_EXTENT  MCI_VID_GETDEVCAPS_IMAGE_Y_EXTENT
  618. #define MCI_OVLY_GETDEVCAPS_MAX_WINDOWS     MCI_VID_GETDEVCAPS_MAX_WINDOWS
  619. #define MCI_OVLY_GETDEVCAPS_CAN_FREEZE      MCI_VID_GETDEVCAPS_CAN_FREEZE
  620. #define MCI_OVLY_GETDEVCAPS_OVERLAY_GRAPHICS MCI_VID_GETDEVCAPS_OVERLAY_GRAPHICS
  621.  
  622.  
  623. #define MCI_PREROLL_NOTIFIED                0x00000001L
  624. #define MCI_PREROLL_DETERMINISTIC           0x00000002L
  625. #define MCI_PREROLL_NONE                    0x00000003L
  626.  
  627. /*********************************************************************/
  628. /* parameter structure for the MCI_GETDEVCAPS message                */
  629. /*********************************************************************/
  630. typedef struct _MCI_GETDEVCAPS_PARMS {
  631.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  632.     DWORD   dwReturn;        /* Return field                            */
  633.     DWORD   dwItem;          /* Item field for GETDEVCAPS item to query */
  634.     WORD    wMessage;        /* Field to hold MCI message to query      */
  635.     WORD    wReserved0;      /* Reserved field                          */
  636. } MCI_GETDEVCAPS_PARMS;
  637. typedef MCI_GETDEVCAPS_PARMS   * LPMCI_GETDEVCAPS_PARMS;
  638.  
  639. /*********************************************************************/
  640. /* parameter structure for the MCI_WAVE_GETDEVCAPS                   */
  641. /*********************************************************************/
  642. typedef struct _MCI_WAVE_GETDEVCAPS_PARMS {
  643.     ULONG   ulCallback;       /* PM window handle for MCI notify message */
  644.     ULONG   ulReturn;         /* Return field                            */
  645.     ULONG   ulItem;           /* Item field for GETDEVCAPS item to query */
  646.     USHORT  usMessage;        /* Field to hold MCI message to query      */
  647.     USHORT  usReserved0;      /* Reserved field                          */
  648.     ULONG   ulLength;         /* Length of structure in ULONGS           */
  649.     ULONG   ulBitsPerSample;  /* Number of Bits per Sample               */
  650.     ULONG   ulFormatTag;      /* Format Tag                              */
  651.     ULONG   ulSamplesPerSec;  /* Sampling Rate                           */
  652.     ULONG   ulChannels;       /* Number of channels                      */
  653.     ULONG   ulFormatMode;     /* Either MCI_RECORD or MCI_PLAY           */
  654. } MCI_WAVE_GETDEVCAPS_PARMS;
  655. typedef MCI_WAVE_GETDEVCAPS_PARMS   * PMCI_WAVE_GETDEVCAPS_PARMS;
  656.  
  657. /*********************************************************************/
  658. /* flag values for the MCI_GETIMAGEBUFFER and MCI_SETIMAGEBUFFER msg */
  659. /*     0x0000XX00 are reserved for MCI_GETIMAGEBUFFER and            */
  660. /*       MCI_SETIMAGEBUFFER Flags                                    */
  661. /*     MCI_CONVERT is defined by MCI_CAPTURE message as 0x00001000L  */
  662. /*********************************************************************/
  663. #define MCI_USE_HW_BUFFER                   0x00000400L
  664. #define MCI_GET_HW_BUFFER_PTR               0x00000800L
  665.  
  666.    /***************************************************/
  667.    /* parm structure for MCI_GETIMAGEBUFFER and       */
  668.    /*                    MCI_SETIMAGEBUFFER messages  */
  669.    /***************************************************/
  670. typedef  struct _MCI_IMAGE_PARMS {
  671.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  672.     DWORD   dwPelFormat;     /* Format of the image data returned       */
  673.     WORD    wBitCount;       /* Number of bitsimage data returned       */
  674.     WORD    wReserved0;      /* Reserved field                          */
  675.     DWORD   dwImageCompression; /*                                      */
  676.     RECTL   rect;            /* Image area to get/set                   */
  677.     PVOID   pPelBuffer;      /* Pel data buffer                         */
  678.     DWORD   dwPelBufferHeight; /* Number of rows in buffer              */
  679.     DWORD   dwPelBufferWidth;  /* Pels per row in buffer                */
  680.     DWORD   dwBufLen;        /* Pel data buffer length in bytes         */
  681.  
  682. } MCI_IMAGE_PARMS;
  683. typedef MCI_IMAGE_PARMS   *LPMCI_IMAGE_PARMS;
  684.  
  685. /*********************************************************************/
  686. /* flags for the MCI_GETIMAGEPALETTE message                         */
  687. /*     0x0000XX00 are reserved for MCI_GETIMAGEPALETTE flags         */
  688. /*********************************************************************/
  689. #define MCI_FIND_BEST_REGISTERED            0x00000100L
  690. #define MCI_QUERY_REGISTERED_MAP            0x00000200L
  691. #define MCI_QUERY_REGISTERED_MAP_SIZE       0x00000400L
  692.  
  693.  
  694.    /***************************************************/
  695.    /* parameter structure for MCI_GETIMAGEPALETTE and */
  696.    /*    MCI_SETIMAGEPALETTE messages                 */
  697.    /***************************************************/
  698. typedef  struct _MCI_PALETTE_PARMS {
  699.     DWORD   dwCallback;      /* PM window handle for MCI notify message   */
  700.     WORD    wRegisteredMap;  /* Id of the palette from the registed color */
  701.                              /* map                                       */
  702.     WORD    wReserved0;      /* Reserved field                            */
  703.     DWORD   dwPalEntries;    /* size of the palette returned              */
  704.     PVOID   pPalette;        /* pointer to the palette                    */
  705. } MCI_PALETTE_PARMS;
  706. typedef MCI_PALETTE_PARMS   *LPMCI_PALETTE_PARMS;
  707.  
  708.  
  709. /*********************************************************************/
  710. /* Parameter structure for the MCI_GETTOC message                    */
  711. /*********************************************************************/
  712. typedef struct _MCI_TOC_REC {
  713.     BYTE      TrackNum;      /* Returned Track Number                          */
  714.     DWORD     dwStartAddr;   /* Starting address of the track in MMTIME format */
  715.     DWORD     dwEndAddr;     /* Ending address of the track in MMTIME format   */
  716.     BYTE      Control;       /* Track Control information                      */
  717.     WORD      wCountry;      /* Country                                        */
  718.     DWORD     dwOwner;       /* Owner                                          */
  719.     DWORD     dwSerialNum;   /* Serial Number                                  */
  720. } MCI_TOC_REC;
  721. typedef MCI_TOC_REC   *LPTOCREC;
  722.  
  723. typedef struct _MCI_TOC_PARMS {
  724.     DWORD     dwCallback;    /* PM window handle for MCI notify message    */
  725.     LPTOCREC  lpBuf;         /* Pointer to array MCI_TOC_REC structures to */
  726.                              /* be filled in by the mci device             */
  727.     DWORD     dwBufSize;     /* Size of the array                          */
  728. } MCI_TOC_PARMS;
  729. typedef MCI_TOC_PARMS   * LPMCI_TOC_PARMS;
  730.  
  731. /*********************************************************************/
  732. /* parameters for the MCI_GROUP message                              */
  733. /*     0x00XXXX00 are reserved for MCI_GROUP flags                   */
  734. /*********************************************************************/
  735. #define MCI_SYNCHRONIZE                     0x00000100L
  736. #define MCI_NOPIECEMEAL                     0x00000200L
  737. #define MCI_GROUP_MAKE                      0x00000400L
  738. #define MCI_GROUP_DELETE                    0x00000800L
  739. #define MCI_GROUP_ALIAS                     0x00001000L
  740. #define MCI_GROUP_MASTER                    0x00002000L
  741.  
  742. typedef struct _MCI_GROUP_PARMS {
  743.     HWND    hwndCallback;    /* PM window handle for MCI notify message.    */
  744.     USHORT  usGroupID;       /* GroupID                                     */
  745.     USHORT  usReserved0;     /* RESERVED                                    */
  746.     ULONG   ulStructLength;  /* Length of Structure in ULONGS.              */
  747.     USHORT  usMasterID;      /* ID of Master device in Synchrounous groups. */
  748.     USHORT  usReserved1;     /* RESERVED                                    */
  749.     PSZ     pszGroupAlias;   /* Pointer to Alias Name.                      */
  750.     ULONG   ulNumDevices;    /* Number of Devices in group.                 */
  751.     PULONG  paulDeviceID;    /* Array of Device ids in the group.           */
  752. } MCI_GROUP_PARMS;
  753. typedef MCI_GROUP_PARMS *PMCI_GROUP_PARMS;
  754.  
  755.  
  756. /*********************************************************************/
  757. /* flags for the MCI_INFO message                                    */
  758. /*     0x00000X00 are reserved for MCI_INFO flags                    */
  759. /*********************************************************************/
  760. #define MCI_INFO_PRODUCT                    0x00000100L
  761. #define MCI_INFO_FILE                       0x00000200L
  762.  
  763.     /************************************************/
  764.     /* CD Audio                MCI_INFO             */
  765.     /************************************************/
  766. #define MCI_CD_INFO_ID                      0x00010000L
  767. #define MCI_CD_INFO_UPC                     0x00020000L
  768.  
  769.     /************************************************/
  770.     /* Videodisc               MCI_INFO             */
  771.     /************************************************/
  772. #define MCI_VD_INFO_LABEL                   0x00001000L
  773.  
  774.     /************************************************/
  775.     /* Digital Video           MCI_INFO             */
  776.     /************************************************/
  777. #define MCI_DGV_INFO_VIDEO_FILE             0x00001000L
  778. #define MCI_DGV_INFO_IMAGE_FILE             0x00002000L
  779. #define MCI_DGV_INFO_TEXT                   0x00010000L
  780.  
  781.     /************************************************/
  782.     /* Video Overlay           MCI_INFO             */
  783.     /************************************************/
  784. #define MCI_OVLY_INFO_TEXT                  0x00010000L
  785.  
  786.  
  787. typedef struct _MCI_INFO_PARMS {
  788.     DWORD     dwCallback;    /* PM window handle for MCI notify message */
  789.     LPSTR     lpstrReturn;   /* Pointer to return buffer                */
  790.     DWORD     dwRetSize;     /* Return buffer size                      */
  791. } MCI_INFO_PARMS;
  792. typedef MCI_INFO_PARMS   *LPMCI_INFO_PARMS;
  793.  
  794. /*********************************************************************/
  795. /* parameters and flags for the MCI_LOAD message                     */
  796. /*     0x00000X00 are reserved for MCI_LOAD flags                    */
  797. /*********************************************************************/
  798. typedef struct _MCI_LOAD_PARMS {
  799.     DWORD  dwCallback;       /* PM window handle for MCI notify message */
  800.     LPSTR  lpstrElementName; /* File name to loads                      */
  801. } MCI_LOAD_PARMS;
  802. typedef MCI_LOAD_PARMS   *LPMCI_LOAD_PARMS;
  803.  
  804. /*********************************************************************/
  805. /* parameters and flags for the MCI_MASTERAUDIO                      */
  806. /*     0x000XXX00 are reserved for MCI_MASTERAUDIO  flags            */
  807. /*********************************************************************/
  808. #define MCI_ON                              0x00000100L
  809. #define MCI_OFF                             0x00000200L
  810. #define MCI_HEADPHONES                      0x00000400L
  811. #define MCI_SPEAKERS                        0x00000800L
  812. #define MCI_MASTERVOL                       0x00001000L
  813. #define MCI_SAVESETTING                     0x00002000L
  814. #define MCI_QUERYSAVEDSETTING               0x00004000L
  815. #define MCI_QUERYCURRENTSETTING             0x00008000L
  816.  
  817.  
  818. typedef struct _MCI_MASTERAUDIO_PARMS {
  819.     DWORD   dwDummyCallback; /* PM window handle for MCI notify message */
  820.     DWORD   dwReturn;        /* Return field for query information      */
  821.     DWORD   dwMasterVolume;  /* Master volume field                     */
  822. } MCI_MASTERAUDIO_PARMS;
  823. typedef MCI_MASTERAUDIO_PARMS   *LPMCI_MASTERAUDIO_PARMS;
  824.  
  825. /*********************************************************************/
  826. /* parameters and flags for the MCI_OPEN message                     */
  827. /*     0x0000XX00 are reserved for MCI_OPEN flags                    */
  828. /*********************************************************************/
  829. #define MCI_OPEN_ELEMENT                    0x00000100L
  830. #define MCI_OPEN_ALIAS                      0x00000200L
  831. #define MCI_OPEN_ELEMENT_ID                 0x00000400L
  832. #define MCI_OPEN_PLAYLIST                   0x00000800L
  833. #define MCI_OPEN_TYPE_ID                    0x00001000L
  834. #define MCI_OPEN_SHAREABLE                  0x00002000L
  835. #define MCI_OPEN_MMIO                       0x00004000L
  836. #define MCI_READONLY                        0x00008000L
  837.  
  838.     /***************************************************/
  839.     /* parameters and flags for the MCI_OPEN message   */
  840.     /* Digital Video, Video Overlay specific           */
  841.     /***************************************************/
  842. #define MCI_VID_OPEN_PARENT                 0x01000000L
  843. #define MCI_DGV_OPEN_PARENT                 MCI_VID_OPEN_PARENT
  844. #define MCI_OVLY_OPEN_PARENT                MCI_VID_OPEN_PARENT
  845.  
  846. typedef struct _MCI_OPEN_PARMS {
  847.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  848.     WORD    wDeviceID;       /* Device ID returned to user              */
  849.     WORD    wReserved0;      /* Reserved                                */
  850.     LPSTR   lpstrDeviceType; /* Device name from SYSTEM.INI             */
  851.     LPSTR   lpstrElementName;/* Typically a file name or NULL           */
  852.     LPSTR   lpstrAlias;      /* Optional device alias                   */
  853. } MCI_OPEN_PARMS;
  854. typedef MCI_OPEN_PARMS   *LPMCI_OPEN_PARMS;
  855.  
  856.     /**********************************************************/
  857.     /* parameters for the AMP MCI_OPEN message                */
  858.     /**********************************************************/
  859. typedef struct _MCI_AMP_OPEN_PARMS {
  860.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  861.     WORD    wDeviceID;       /* Device ID returned to user              */
  862.     WORD    wReserved0;      /* Reserved field                          */
  863.     LPSTR   lpstrDeviceType; /* Device name from SYSTEM.INI             */
  864.     LPSTR   lpstrElementName;/* Typically a file name or NULL           */
  865.     LPSTR   lpstrAlias;      /* Optional device alias                   */
  866.     ULONG   ulDevDataPtr;    /* Pointer to device data                  */
  867. } MCI_AMP_OPEN_PARMS;
  868. typedef MCI_AMP_OPEN_PARMS   *LPMCI_AMP_OPEN_PARMS;
  869.  
  870.     /**********************************************************/
  871.     /* parameters for MCI_OPEN message for video devices      */
  872.     /**********************************************************/
  873.  
  874. typedef  struct _MCI_VID_OPEN_PARMS {
  875.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  876.     WORD    wDeviceID;       /* Device ID returned to user              */
  877.     WORD    wReserved0;      /* Reserved field                          */
  878.     LPSTR   lpstrDeviceType; /* Device name from SYSTEM.INI             */
  879.     LPSTR   lpstrElementName;/* Typically a file name or NULL           */
  880.     LPSTR   lpstrAlias;      /* Optional device alias                   */
  881.     HWND    hwndParent;      /* Parent window handle                    */
  882. } MCI_VID_OPEN_PARMS;
  883.  
  884. typedef MCI_VID_OPEN_PARMS   MCI_DGV_OPEN_PARMS;
  885. typedef MCI_DGV_OPEN_PARMS   *LPMCI_DGV_OPEN_PARMS;
  886.  
  887. typedef MCI_VID_OPEN_PARMS    MCI_OVLY_OPEN_PARMS;
  888. typedef MCI_OVLY_OPEN_PARMS   *LPMCI_OVLY_OPEN_PARMS;
  889.  
  890.     /***************************************************/
  891.     /* MCI_PLAY flag values for videodisc              */
  892.     /***************************************************/
  893. #define MCI_VD_PLAY_REVERSE                 0x00001000L
  894. #define MCI_VD_PLAY_FAST                    0x00002000L
  895. #define MCI_VD_PLAY_SPEED                   0x00004000L
  896. #define MCI_VD_PLAY_SCAN                    0x00008000L
  897. #define MCI_VD_PLAY_SLOW                    0x00010000L
  898.  
  899.     /***************************************************/
  900.     /* MCI_PLAY flag values for digital video          */
  901.     /***************************************************/
  902. #define MCI_DGV_PLAY_REVERSE                0x00001000L
  903. #define MCI_DGV_PLAY_FAST                   0x00002000L
  904. #define MCI_DGV_PLAY_SPEED                  0x00004000L
  905. #define MCI_DGV_PLAY_SCAN                   0x00008000L
  906. #define MCI_DGV_PLAY_SLOW                   0x00010000L
  907. #define MCI_DGV_PLAY_REPEAT                 0x00020000L
  908.  
  909. typedef struct _MCI_PLAY_PARMS {
  910.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  911.     DWORD   dwFrom;          /* Play from this position                 */
  912.     DWORD   dwTo;            /* Play to this position                   */
  913. } MCI_PLAY_PARMS;
  914. typedef MCI_PLAY_PARMS   *LPMCI_PLAY_PARMS;
  915.  
  916. typedef struct _MCI_VD_PLAY_PARMS {
  917.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  918.     DWORD   dwFrom;          /* Play from this position                 */
  919.     DWORD   dwTo;            /* Play to this position                   */
  920.     DWORD   dwFactor;        /* Play at this speed factor               */
  921. } MCI_VD_PLAY_PARMS;
  922. typedef MCI_VD_PLAY_PARMS   *LPMCI_VD_PLAY_PARMS;
  923.  
  924. typedef  struct _MCI_DGV_PLAY_PARMS {
  925.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  926.     DWORD   dwFrom;          /* Play from this position                 */
  927.     DWORD   dwTo;            /* Play to this position                   */
  928.     DWORD   dwSpeed;         /* Specifies the play rate in frames per second */
  929. } MCI_DGV_PLAY_PARMS;
  930. typedef MCI_DGV_PLAY_PARMS   *LPMCI_DGV_PLAY_PARMS;
  931.  
  932. /*********************************************************************/
  933. /* parameters for the MCI_PUT  message                               */
  934. /*     0x00000X00 are reserved for MCI_PUT  flags                    */
  935. /*********************************************************************/
  936. #define MCI_VID_PUT_RECT                    0x00000100L
  937. #define MCI_VID_PUT_DESTINATION             0x00000200L
  938. #define MCI_VID_PUT_SOURCE                  0x00000400L
  939. #define MCI_VID_PUT_WINDOW_MOVE             0x00000800L
  940. #define MCI_VID_PUT_WINDOW_SIZE             0x00001000L
  941.  
  942. #define MCI_DGV_PUT_RECT                    MCI_VID_PUT_RECT
  943. #define MCI_DGV_PUT_DESTINATION             MCI_VID_PUT_DESTINATION
  944. #define MCI_DGV_PUT_SOURCE                  MCI_VID_PUT_SOURCE
  945. #define MCI_DGV_PUT_WINDOW_MOVE             MCI_VID_PUT_WINDOW_MOVE
  946. #define MCI_DGV_PUT_WINDOW_SIZE             MCI_VID_PUT_WINDOW_SIZE
  947.  
  948. #define MCI_OVLY_PUT_RECT                   MCI_VID_PUT_RECT
  949. #define MCI_OVLY_PUT_DESTINATION            MCI_VID_PUT_DESTINATION
  950. #define MCI_OVLY_PUT_SOURCE                 MCI_VID_PUT_SOURCE
  951. #define MCI_OVLY_PUT_WINDOW_MOVE            MCI_VID_PUT_WINDOW_MOVE
  952. #define MCI_OVLY_PUT_WINDOW_SIZE            MCI_VID_PUT_WINDOW_SIZE
  953.  
  954.     /***************************************************/
  955.     /* Rectangle parameters for MCI_PUT, MCI_WHERE,    */
  956.     /* MCI_FREEZE, and MCI_UNFREEZE                    */
  957.     /***************************************************/
  958.  
  959. typedef  struct _MCI_VID_RECT_PARMS {
  960.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  961.     RECTL   rc;              /* rectangle array specifying the offset   */
  962.                              /* and size of a rectangle                 */
  963. } MCI_VID_RECT_PARMS;
  964.  
  965. typedef MCI_VID_RECT_PARMS   MCI_DGV_RECT_PARMS;
  966. typedef MCI_DGV_RECT_PARMS   *LPMCI_DGV_RECT_PARMS;
  967.  
  968. typedef MCI_VID_RECT_PARMS   MCI_OVLY_RECT_PARMS;
  969. typedef MCI_OVLY_RECT_PARMS  *LPMCI_OVLY_RECT_PARMS;
  970.  
  971. /*********************************************************************/
  972. /* parameters for the MCI_RECORD message                             */
  973. /*     0x00000X00 are reserved for MCI_RECORD flags                  */
  974. /*********************************************************************/
  975. #define MCI_RECORD_INSERT                   0x00000100L
  976. #define MCI_RECORD_OVERWRITE                0x00000200L
  977.  
  978. #define MCI_DGV_RECORD_RECT                 0x00000400L
  979.  
  980. typedef struct _MCI_RECORD_PARMS {
  981.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  982.     DWORD   dwFrom;          /* Record from position                    */
  983.     DWORD   dwTo;            /* Record to position                      */
  984. } MCI_RECORD_PARMS;
  985. typedef MCI_RECORD_PARMS   *LPMCI_RECORD_PARMS;
  986.  
  987. /*********************************************************************/
  988. /* parameters for the MCI_RELEASEDEVICE message                      */
  989. /*     0xXXXXXX00 are reserved for MCI_RELEASEDEVICE message         */
  990. /*********************************************************************/
  991. #define MCI_RETURN_RESOURCE                 0x00000100L
  992.  
  993. /*********************************************************************/
  994. /* parameters for the MCI_RESTORE message                            */
  995. /*     0x0000XX00 are reserved for MCI_RESTORE flags                 */
  996. /*     MCI_CONVERT is defined by MCI_CAPTURE message as 0x00001000L  */
  997. /*********************************************************************/
  998. #define MCI_RESTORE_SRC_RECT                0x00000100L
  999. #define MCI_RESTORE_DEST_RECT               0x00000200L
  1000.  
  1001. typedef struct _MCI_RESTORE_PARMS {
  1002.     DWORD   dwCallback;      /* PM window handle for MCI notify message     */
  1003.     RECTL   SrcRect;         /* Rectangle array specifying the source       */
  1004.                              /* area to be restored                                 */
  1005.     RECTL   DestRect;        /* Rectangle array specifying the destination  */
  1006.                              /* area to be restored                         */
  1007. } MCI_RESTORE_PARMS;
  1008. typedef MCI_RESTORE_PARMS   *LPMCI_RESTORE_PARMS;
  1009.  
  1010. /*********************************************************************/
  1011. /* parameters for the MCI_SAVE  message                              */
  1012. /*     0x00000X00 are reserved for MCI_SAVE  flags                   */
  1013. /*********************************************************************/
  1014. #define MCI_SAVE_FILE                       0x00000100L
  1015.  
  1016.     /*************************************************/
  1017.     /* Digital Video               MCI_SAVE          */
  1018.     /*************************************************/
  1019.  
  1020. #define MCI_DGV_SAVE_VIDEO_FILE             0x00001000L
  1021. #define MCI_DGV_SAVE_IMAGE_FILE             0x00002000L
  1022.  
  1023. typedef struct _MCI_SAVE_PARMS {
  1024.     DWORD   dwCallback;      /* PM window handle for MCI notify message     */
  1025.     DWORD   lpFileName;      /* Filename to save data to                    */
  1026. } MCI_SAVE_PARMS;
  1027. typedef MCI_SAVE_PARMS   *LPMCI_SAVE_PARMS;
  1028.  
  1029. /*********************************************************************/
  1030. /* parameters for the MCI_SEEK message                               */
  1031. /*     0x00000X00 are reserved for MCI_SEEK flags                    */
  1032. /*********************************************************************/
  1033. #define MCI_TO_START                        0x00000100L
  1034. #define MCI_TO_END                          0x00000200L
  1035.  
  1036.     /*************************************************/
  1037.     /* Digital Video               MCI_SEEK          */
  1038.     /*************************************************/
  1039.  
  1040. #define MCI_DGV_SEEK_TO_NEAREST_IFRAME      0x00100000L
  1041.  
  1042.     /*************************************************/
  1043.     /* Videodisc                   MCI_SEEK          */
  1044.     /*************************************************/
  1045. #define MCI_VD_SEEK_REVERSE                 0x00001000L
  1046.  
  1047. typedef struct _MCI_SEEK_PARMS {
  1048.     DWORD   dwCallback;      /* PM window handle for MCI notify message     */
  1049.     DWORD   dwTo;            /* Seek to this position                       */
  1050. } MCI_SEEK_PARMS;
  1051. typedef MCI_SEEK_PARMS   *LPMCI_SEEK_PARMS;
  1052.  
  1053. /*********************************************************************/
  1054. /* Flags for the MCI_SET message                                     */
  1055. /*     0x00XXXX00 are reserved for MCI_SET  flags                    */
  1056. /*********************************************************************/
  1057. #define MCI_SET_ITEM                        0x00000100L
  1058. #define MCI_SET_ON                          0x00000200L
  1059. #define MCI_SET_OFF                         0x00000400L
  1060. #define MCI_SET_VIDEO                       0x00000800L
  1061. #define MCI_SET_AUDIO                       0x00001000L
  1062. #define MCI_SET_DOOR_OPEN                   0x00002000L
  1063. #define MCI_SET_DOOR_CLOSED                 0x00004000L
  1064. #define MCI_SET_SPEED_FORMAT                0x00008000L
  1065. #define MCI_SET_TIME_FORMAT                 0x00010000L
  1066. #define MCI_SET_DOOR_LOCK                   0x00020000L
  1067. #define MCI_SET_DOOR_UNLOCK                 0x00040000L
  1068. #define MCI_SET_VOLUME                      0x00080000L
  1069. #define MCI_SET_ITEM_FOURCC                 0x00100000L
  1070.  
  1071. /*******************************************************/
  1072. /* Values for the dwAudio field                        */
  1073. /*******************************************************/
  1074. #define MCI_SET_AUDIO_ALL                   0x00000000L
  1075. #define MCI_SET_AUDIO_LEFT                  0x00000001L
  1076. #define MCI_SET_AUDIO_RIGHT                 0x00000002L
  1077.  
  1078. /*******************************************************/
  1079. /* MCI_SET flags for amp/mixer                         */
  1080. /*******************************************************/
  1081. #define MCI_AMP_SET_BALANCE                 0x00100000L
  1082. #define MCI_AMP_SET_PITCH                   0x00200000L
  1083. #define MCI_AMP_SET_TREBLE                  0x00400000L
  1084. #define MCI_AMP_SET_BASS                    0x00800000L
  1085. #define MCI_AMP_SET_GAIN                    0x01000000L
  1086.  
  1087. /*******************************************************/
  1088. /* General MCI_SET item values                         */
  1089. /*******************************************************/
  1090. #define MCI_SET_MONITOR                     0x00000001L
  1091. #define MCI_SET_MONITOR_AUDIO               0x00000002L
  1092. #define MCI_SET_MONITOR_VIDEO               0x00000003L
  1093. #define MCI_SET_RECORD                      0x00000004L
  1094.  
  1095. /*******************************************************/
  1096. /* MCI_SET item values for amp/mixer                   */
  1097. /*******************************************************/
  1098. #define MCI_AMP_SET_MONITOR                 MCI_SET_MONITOR_AUDIO
  1099.  
  1100. /*******************************************************/
  1101. /* MCI_SET flags for CDXA                              */
  1102. /*******************************************************/
  1103. #define MCI_CDXA_SET_CHANNEL                0x01000000L
  1104. #define MCI_CDXA_AUDIO_DEVICE               0x10000000L
  1105. #define MCI_CDXA_AUDIO_BUFFER               0x02000000L
  1106. #define MCI_CDXA_VIDEO_BUFFER               0x04000000L
  1107. #define MCI_CDXA_DATA_BUFFER                0x08000000L
  1108.  
  1109. /*******************************************************/
  1110. /* MCI_SET flags for videodisc                         */
  1111. /*******************************************************/
  1112. #define MCI_VD_SET_ON                       MCI_SET_ON
  1113. #define MCI_VD_SET_OFF                      MCI_SET_OFF
  1114. #define MCI_VD_SET_VIDEO                    MCI_SET_VIDEO
  1115. #define MCI_VD_SET_CHANNEL                  0x00100000L
  1116. #define MCI_VD_SET_DISPLAY                  0x00200000L
  1117.  
  1118. /*******************************************************/
  1119. /* Generic MCI_SET item values for video devices       */
  1120. /*******************************************************/
  1121. #define MCI_VID_SET_VIDEO_COMPRESSION           MCI_VID_ITEM_BASE
  1122. #define MCI_VID_SET_IMAGE_COMPRESSION           (MCI_VID_ITEM_BASE+1)
  1123. #define MCI_VID_SET_IMAGE_BITSPERPEL            (MCI_VID_ITEM_BASE+2)
  1124. #define MCI_VID_SET_IMAGE_PELFORMAT             (MCI_VID_ITEM_BASE+3)
  1125. #define MCI_VID_SET_BRIGHTNESS                  (MCI_VID_ITEM_BASE+4)
  1126. #define MCI_VID_SET_CONTRAST                    (MCI_VID_ITEM_BASE+5)
  1127. #define MCI_VID_SET_HUE                         (MCI_VID_ITEM_BASE+6)
  1128. #define MCI_VID_SET_SATURATION                  (MCI_VID_ITEM_BASE+7)
  1129. #define MCI_VID_SET_SHARPNESS                   (MCI_VID_ITEM_BASE+8)
  1130. #define MCI_VID_SET_GREYSCALE                   (MCI_VID_ITEM_BASE+9)
  1131. #define MCI_VID_SET_IMAGE_QUALITY               (MCI_VID_ITEM_BASE+10)
  1132. #define MCI_VID_SET_VIDEO_QUALITY               (MCI_VID_ITEM_BASE+11)
  1133. #define MCI_VID_SET_IMAGE_COMPRESSION_METHOD    (MCI_VID_ITEM_BASE+12)
  1134. #define MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE  (MCI_VID_ITEM_BASE+13)
  1135. #define MCI_VID_SET_IMAGE_FILE_FORMAT           (MCI_VID_ITEM_BASE+14)
  1136. #define MCI_VID_SET_REF_INTERVAL                (MCI_VID_ITEM_BASE+15)
  1137. #define MCI_VID_SET_MAXDATARATE                 (MCI_VID_ITEM_BASE+16)
  1138. #define MCI_VID_SET_VIDEO_FILE_FORMAT           (MCI_VID_ITEM_BASE+17)
  1139.  
  1140. /*******************************************************/
  1141. /* MCI_SET item values for video overlay               */
  1142. /*******************************************************/
  1143. #define MCI_OVLY_SET_IMAGE_COMPRESSION          MCI_VID_SET_IMAGE_COMPRESSION
  1144. #define MCI_OVLY_SET_IMAGE_BITSPERPEL           MCI_VID_SET_IMAGE_BITSPERPEL
  1145. #define MCI_OVLY_SET_IMAGE_PELFORMAT            MCI_VID_SET_IMAGE_PELFORMAT
  1146. #define MCI_OVLY_SET_BRIGHTNESS                 MCI_VID_SET_BRIGHTNESS
  1147. #define MCI_OVLY_SET_CONTRAST                   MCI_VID_SET_CONTRAST
  1148. #define MCI_OVLY_SET_HUE                        MCI_VID_SET_HUE
  1149. #define MCI_OVLY_SET_SATURATION                 MCI_VID_SET_SATURATION
  1150. #define MCI_OVLY_SET_SHARPNESS                  MCI_VID_SET_SHARPNESS
  1151. #define MCI_OVLY_SET_GREYSCALE                  MCI_VID_SET_GREYSCALE
  1152. #define MCI_OVLY_SET_IMAGE_QUALITY              MCI_VID_SET_IMAGE_QUALITY
  1153. #define MCI_OVLY_SET_IMAGE_COMPRESSION_METHOD   MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  1154. #define MCI_OVLY_SET_MINIMUM_VIDEO_REFRESH_RATE MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  1155. #define MCI_OVLY_SET_IMAGE_FILE_FORMAT          MCI_VID_SET_IMAGE_FILE_FORMAT
  1156.  
  1157. /*******************************************************/
  1158. /* MCI_SET item values for digital video               */
  1159. /*******************************************************/
  1160. #define MCI_DGV_SET_VIDEO_COMPRESSION           MCI_VID_SET_VIDEO_COMPRESSION
  1161. #define MCI_DGV_SET_IMAGE_COMPRESSION           MCI_VID_SET_IMAGE_COMPRESSION
  1162. #define MCI_DGV_SET_IMAGE_BITSPERPEL            MCI_VID_SET_IMAGE_BITSPERPEL
  1163. #define MCI_DGV_SET_IMAGE_PELFORMAT             MCI_VID_SET_IMAGE_PELFORMAT
  1164. #define MCI_DGV_SET_BRIGHTNESS                  MCI_VID_SET_BRIGHTNESS
  1165. #define MCI_DGV_SET_CONTRAST                    MCI_VID_SET_CONTRAST
  1166. #define MCI_DGV_SET_HUE                         MCI_VID_SET_HUE
  1167. #define MCI_DGV_SET_SATURATION                  MCI_VID_SET_SATURATION
  1168. #define MCI_DGV_SET_SHARPNESS                   MCI_VID_SET_SHARPNESS
  1169. #define MCI_DGV_SET_GREYSCALE                   MCI_VID_SET_GREYSCALE
  1170. #define MCI_DGV_SET_IMAGE_QUALITY               MCI_VID_SET_IMAGE_QUALITY
  1171. #define MCI_DGV_SET_VIDEO_QUALITY               MCI_VID_SET_VIDEO_QUALITY
  1172. #define MCI_DGV_SET_IMAGE_COMPRESSION_METHOD    MCI_VID_SET_IMAGE_COMPRESSION_METHOD
  1173. #define MCI_DGV_SET_MONITOR                     MCI_SET_MONITOR
  1174. #define MCI_DGV_SET_MINIMUM_VIDEO_REFRESH_RATE  MCI_VID_SET_MINIMUM_VIDEO_REFRESH_RATE
  1175. #define MCI_DGV_SET_IMAGE_FILE_FORMAT           MCI_VID_SET_IMAGE_FILE_FORMAT
  1176. #define MCI_DGV_SET_REF_INTERVAL                MCI_VID_SET_REF_INTERVAL
  1177. #define MCI_DGV_SET_MAXDATARATE                 MCI_VID_SET_MAXDATARATE
  1178. #define MCI_DGV_SET_VIDEO_FILE_FORMAT           MCI_VID_SET_VIDEO_FILE_FORMAT
  1179.  
  1180. #define MCI_DGV_SET_AUDIO_COMPRESSION           MCI_DGV_ITEM_BASE
  1181. #define MCI_DGV_SET_AUDIO_QUALITY               (MCI_DGV_ITEM_BASE+1)
  1182.  
  1183. /*******************************************************/
  1184. /* Audio/video/image compression types                 */
  1185. /*******************************************************/
  1186. #define MCI_AUD_COMP_ADPCM4          0x00000001L
  1187. #define MCI_AUD_COMP_PCM8            0x00000002L
  1188.  
  1189. #define MCI_VID_COMP_RTV_2_0         0x00000101L
  1190. #define MCI_VID_COMP_RTV_2_1         0x00000102L
  1191. #define MCI_VID_COMP_ULTI            0x49544C55L
  1192. #define MCI_VID_COMP_RT21            0x31325452L
  1193.  
  1194. #define MCI_IMG_COMP_NONE            0x00000201L
  1195. #define MCI_IMG_COMP_PIC9_1_0        0x00000202L
  1196. #define MCI_IMG_COMP_PIC16_1_0       0x00000203L
  1197. #define MCI_IMG_COMP_JPEG9           0x00000204L
  1198. #define MCI_IMG_COMP_JPEG9_1_0       MCI_IMG_COMP_JPEG9
  1199. #define MCI_IMG_COMP_BMP_RLE4        0x00000205L
  1200. #define MCI_IMG_COMP_BMP_RLE8        0x00000206L
  1201. #define MCI_IMG_COMP_JPEGN           0x00000207L
  1202.  
  1203. /*******************************************************/
  1204. /* PEL Formats (video/image)                           */
  1205. /*******************************************************/
  1206. #define MCI_VID_PALETTE              0x00000001L
  1207. #define MCI_VID_RGB                  0x00000002L
  1208. #define MCI_VID_YUV                  0x00000003L
  1209.  
  1210. #define MCI_IMG_PALETTE              MCI_VID_PALETTE
  1211. #define MCI_IMG_RGB                  MCI_VID_RGB
  1212. #define MCI_IMG_YUV                  MCI_VID_YUV
  1213.  
  1214.  
  1215. /*******************************************************/
  1216. /* Video file format                                   */
  1217. /*******************************************************/
  1218. #define MCI_VID_FILE_FORMAT_AVI       0x20495641L
  1219.  
  1220.  
  1221. /*******************************************************/
  1222. /* Audio/video/image quality levels                    */
  1223. /*******************************************************/
  1224. #define MCI_AUD_QUALITY_HIGH         0x00000001L
  1225. #define MCI_AUD_QUALITY_MED          0x00000002L
  1226. #define MCI_AUD_QUALITY_LOW          0x00000003L
  1227.  
  1228. #define MCI_VID_QUALITY_HIGH         0x00000101L
  1229. #define MCI_VID_QUALITY_MED          0x00000102L
  1230. #define MCI_VID_QUALITY_LOW          0x00000103L
  1231. #define MCI_VID_QUALITY_BEST         MCI_VID_QUALITY_HIGH
  1232. #define MCI_VID_QUALITY_CDROM        MCI_VID_QUALITY_MED
  1233. #define MCI_VID_QUALITY_COMPACT      MCI_VID_QUALITY_LOW
  1234. #define MCI_VID_QUALITY_BETTER       MCI_VID_QUALITY_MED
  1235. #define MCI_VID_QUALITY_GOOD         MCI_VID_QUALITY_LOW
  1236.  
  1237. #define MCI_IMG_QUALITY_HIGH         0x00000201L
  1238. #define MCI_IMG_QUALITY_MED          0x00000202L
  1239. #define MCI_IMG_QUALITY_LOW          0x00000203L
  1240.  
  1241. /*******************************************************/
  1242. /* MCI_SET flags for wave audio                        */
  1243. /*******************************************************/
  1244. #define MCI_WAVE_SET_SAMPLESPERSEC          0x01000000L
  1245. #define MCI_WAVE_SET_AVGBYTESPERSEC         0x02000000L
  1246. #define MCI_WAVE_SET_BLOCKALIGN             0x04000000L
  1247. #define MCI_WAVE_SET_FORMATTAG              0x08000000L
  1248. #define MCI_WAVE_SET_CHANNELS               0x10000000L
  1249. #define MCI_WAVE_SET_BITSPERSAMPLE          0x80000000L
  1250.  
  1251. /*******************************************************/
  1252. /* Wave format tag defines                             */
  1253. /*******************************************************/
  1254. #define MCI_WAVE_FORMAT_PCM                 DATATYPE_WAVEFORM
  1255. #define MCI_WAVE_FORMAT_ADPCM               0x0002L
  1256. #define MCI_WAVE_FORMAT_IBM_CVSD            0x0005L
  1257. #define MCI_WAVE_FORMAT_ALAW                DATATYPE_RIFF_ALAW
  1258. #define MCI_WAVE_FORMAT_MULAW               DATATYPE_RIFF_MULAW
  1259. #define MCI_WAVE_FORMAT_OKI_ADPCM           0x0010L
  1260. #define MCI_WAVE_FORMAT_DVI_ADPCM           0x0011L
  1261. #define MCI_WAVE_FORMAT_DIGISTD             0x0015L
  1262. #define MCI_WAVE_FORMAT_DIGIFIX             0x0016L
  1263. #define MCI_WAVE_FORMAT_AVC_ADPCM           DATATYPE_ADPCM_AVC
  1264. #define MCI_WAVE_FORMAT_IBM_ADPCM           DATATYPE_ADPCM_AVC
  1265. #define MCI_WAVE_FORMAT_IBM_MULAW           DATATYPE_MULAW
  1266. #define MCI_WAVE_FORMAT_IBM_ALAW            DATATYPE_ALAW
  1267. #define MCI_WAVE_FORMAT_CT_ADPCM            DATATYPE_CT_ADPCM
  1268.  
  1269. /*******************************************************/
  1270. /* MCI_SET flags for sequencer                         */
  1271. /*******************************************************/
  1272. #define MCI_SEQ_SET_TEMPO                   0x00100000L
  1273. #define MCI_SEQ_SET_PORT                    0x00200000L
  1274. #define MCI_SEQ_ENABLE_PORT_MAPPER          0x00400000L
  1275. #define MCI_SEQ_DISABLE_PORT_MAPPER         0x00800000L
  1276. #define MCI_SEQ_SET_OFFSET                  0x01000000L
  1277. #define MCI_SEQ_SET_MASTER                  0x02000000L
  1278. #define MCI_SEQ_SET_SLAVE                   0x04000000L
  1279.  
  1280.    /**********************************************/
  1281.    /* SEQ time formats                           */
  1282.    /**********************************************/
  1283.    #define MCI_SEQ_SET_SMPTE_24             0x00000100L
  1284.    #define MCI_SEQ_SET_SMPTE_25             0x00000200L
  1285.    #define MCI_SEQ_SET_SMPTE_30             0x00000300L
  1286.    #define MCI_SEQ_SET_SMPTE_30DROP         0x00000400L
  1287.    #define MCI_SEQ_SET_SONGPTR              0x00000500L
  1288.  
  1289.    /**********************************************/
  1290.    /* SEQ synchronization types                  */
  1291.    /**********************************************/
  1292.    #define MCI_SEQ_MIDI                     0x00000001L
  1293.    #define MCI_SEQ_SMPTE                    0x00000002L
  1294.    #define MCI_SEQ_FILE                     0x00000003L
  1295.    #define MCI_SEQ_NONE                     0x00000004L
  1296.  
  1297.    /**********************************************/
  1298.    /* SEQ PORT TYPES                             */
  1299.    /**********************************************/
  1300.    #define MCI_SET_NONE                     0x10000000L
  1301.    #define MIDI_MAPPER                      0x20000000L
  1302.    #define MCI_MIDI_MAPPER                  MIDI_MAPPER
  1303.  
  1304. typedef struct _MCI_SET_PARMS {
  1305.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1306.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1307.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1308.     DWORD   dwAudio;         /* Channel number for this operation              */
  1309.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1310.                              /*  MCI_SET_AUDIO_ALL)                            */
  1311.     DWORD   dwLevel;         /* Volume, treble or bass level as % of max.      */
  1312.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1313.     DWORD   dwItem;          /* Item field for set item flags                  */
  1314.     DWORD   dwValue;         /* Value associated with item flag                */
  1315. } MCI_SET_PARMS;
  1316. typedef MCI_SET_PARMS       *LPMCI_SET_PARMS;
  1317.  
  1318. typedef MCI_SET_PARMS       MCI_AMP_SET_PARMS;
  1319. typedef MCI_AMP_SET_PARMS   *LPMCI_AMP_SET_PARMS;
  1320.  
  1321. typedef MCI_SET_PARMS       MCI_DGV_SET_PARMS;
  1322. typedef MCI_DGV_SET_PARMS   *LPMCI_DGV_SET_PARMS;
  1323.  
  1324. typedef MCI_SET_PARMS       MCI_OVLY_SET_PARMS;
  1325. typedef MCI_OVLY_SET_PARMS  *LPMCI_OVLY_SET_PARMS;
  1326.  
  1327. typedef struct _MCI_CDXA_SET_PARMS {
  1328.     DWORD   dwCallback;
  1329.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1330.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1331.     DWORD   dwAudio;         /* Channel number for this operation              */
  1332.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1333.                              /*  MCI_SET_AUDIO_ALL)                            */
  1334.     DWORD   dwLevel;         /* Volume, treble or bass level as % of max.      */
  1335.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1336.     DWORD   dwItem;          /* Item field for set item flags                  */
  1337.     DWORD   dwValue;         /* Value associated with item flag                */
  1338.     DWORD   dwChannel;       /* Channel number                                 */
  1339.     PVOID   pPlayList;       /* Pointer to play list                           */
  1340.     DWORD   dwPlayListSize;  /* Play list size                                 */
  1341. } MCI_CDXA_SET_PARMS;
  1342. typedef MCI_CDXA_SET_PARMS   *LPMCI_CDXA_SET_PARMS;
  1343.  
  1344. typedef struct _MCI_VD_SET_PARMS {
  1345.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1346.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1347.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1348.     DWORD   dwAudio;         /* Channel number for this operation              */
  1349.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1350.                              /*  MCI_SET_AUDIO_ALL)                            */
  1351.     DWORD   dwLevel;         /* Volume, treble or bass level as % of max.      */
  1352.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1353.     DWORD   dwItem;          /* Item field for set item flags                  */
  1354.     DWORD   dwValue;         /* Value associated with item flag                */
  1355.     DWORD   dwChannel;       /* Videodisc channel                              */
  1356. } MCI_VD_SET_PARMS;
  1357. typedef MCI_VD_SET_PARMS   *LPMCI_VD_SET_PARMS;
  1358.  
  1359. typedef struct _MCI_WAVE_SET_PARMS {
  1360.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1361.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1362.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1363.     DWORD   dwAudio;         /* Channel number for this operation              */
  1364.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1365.                              /*  MCI_SET_AUDIO_ALL)                            */
  1366.     DWORD   dwLevel;         /* Volume, trebble or bass level as % of max.     */
  1367.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1368.     DWORD   dwItem;          /* Item field for set item flags                  */
  1369.     DWORD   dwValue;         /* Value associated with item flag                */
  1370.     WORD    wInput;          /* Channel for input                              */
  1371.     WORD    wReserved0;      /* Reserved field                                 */
  1372.     WORD    wOutput;         /* Channel for output                             */
  1373.     WORD    wReserved1;      /* Reserved field                                 */
  1374.     WORD    wFormatTag;      /* Format tag                                     */
  1375.     WORD    wReserved2;      /* Reserved field                                 */
  1376.     WORD    nChannels;       /* mono(1) or stereo(2)                           */
  1377.     WORD    wReserved3;      /* Reserved field                                 */
  1378.     DWORD   nSamplesPerSec;  /* Samples per seconds                            */
  1379.     DWORD   nAvgBytesPerSec; /* Bytes per seconds                              */
  1380.     WORD    nBlockAlign;     /* Block alignment of data                        */
  1381.     WORD    wReserved4;      /* Reserved field                                 */
  1382.     WORD    wBitsPerSample;  /* Bits per seconds                               */
  1383.     WORD    wReserved5;      /* Reserved field                                 */
  1384. } MCI_WAVE_SET_PARMS;
  1385. typedef MCI_WAVE_SET_PARMS   *LPMCI_WAVE_SET_PARMS;
  1386.  
  1387. typedef struct _MCI_SEQ_SET_PARMS {
  1388.     DWORD   dwCallback;
  1389.     DWORD   dwTimeFormat;    /* Time format to be used by the device           */
  1390.     DWORD   dwSpeedFormat;   /* Speed format used by this device               */
  1391.     DWORD   dwAudio;         /* Channel number for this operation              */
  1392.                              /* (MCI_SET_AUDIO_LEFT, MCI_SET_AUDIO_RIGHT,      */
  1393.                              /*  MCI_SET_AUDIO_ALL)                            */
  1394.     DWORD   dwLevel;         /* Volume, trebble or bass level as % of max.     */
  1395.     DWORD   dwOver;          /* Delay time for vectored change in milliseconds */
  1396.     DWORD   dwItem;          /* Item field for set item flags                  */
  1397.     DWORD   dwValue;         /* Value associated with item flag                */
  1398.     DWORD   dwTempo;         /* Specified the tempo                            */
  1399.     DWORD   dwPort;          /* Output port                                    */
  1400.     DWORD   dwSlave;         /* Unused field                                   */
  1401.     DWORD   dwMaster;        /* Unused field                                   */
  1402.     DWORD   dwOffset;        /* Specified the data offset                      */
  1403. } MCI_SEQ_SET_PARMS;
  1404. typedef MCI_SEQ_SET_PARMS   *LPMCI_SEQ_SET_PARMS;
  1405.  
  1406.  
  1407. /*********************************************************************/
  1408. /* parameters for the MCI_SET_CUEPOINT message                       */
  1409. /*     0x00000x00 are reserved for MCI_SET_CUEPOINT flags            */
  1410. /*********************************************************************/
  1411. #define MCI_SET_CUEPOINT_ON                 0x00000100L
  1412. #define MCI_SET_CUEPOINT_OFF                0x00000200L
  1413.  
  1414. typedef struct _MCI_CUEPOINT_PARMS {
  1415.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1416.     DWORD   dwCuepoint;      /* Specifies the cuepoint location                */
  1417.     WORD    wUserParm;       /* User parmameter returned on cuepoint           */
  1418.                              /* notify message                                 */
  1419.     WORD    wReserved0;      /* Reserved field                                 */
  1420. } MCI_CUEPOINT_PARMS;
  1421. typedef MCI_CUEPOINT_PARMS   *LPMCI_CUEPOINT_PARMS;
  1422.  
  1423. /*********************************************************************/
  1424. /* parameters for the MCI_SETIMAGEPALETTE message                    */
  1425. /*     0x000XXX00 are reserved for MCI_SETIMAGEPALETTE flags         */
  1426. /*********************************************************************/
  1427. #define MCI_SET_REGISTERED                  0x00000100L
  1428.  
  1429. /*********************************************************************/
  1430. /* flags and parameter structure for the MCI_SET_POSITION_ADVISE msg */
  1431. /*     0x00000X00 are reserved for MCI_SET_POSITION_ADVISE flags     */
  1432. /*********************************************************************/
  1433. #define MCI_SET_POSITION_ADVISE_ON          0x00000100L
  1434. #define MCI_SET_POSITION_ADVISE_OFF         0x00000200L
  1435.  
  1436. typedef struct _MCI_POSITION_PARMS {
  1437.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1438.     DWORD   dwUnits;         /* Specifies position change notifiication        */
  1439.                              /* granularity                                    */
  1440.     WORD    wUserParm;       /* User parameter returned on position change     */
  1441.                              /* notification message.                          */
  1442.     WORD    Reserved0;       /* Reserved field                                 */
  1443.     DWORD   Reserved1;       /* Reserved field                                 */
  1444.     } MCI_POSITION_PARMS;
  1445. typedef MCI_POSITION_PARMS   *LPMCI_POSITION_PARMS;
  1446.  
  1447. /*********************************************************************/
  1448. /* parameter structure for the MCI_SET_SYNC_OFFSET message           */
  1449. /*********************************************************************/
  1450. typedef struct _MCI_SYNC_OFFSET_PARMS{
  1451.     DWORD   dwCallback;      /* PM window handle for MCI notify message        */
  1452.     DWORD   dwOffset;        /* Specifies the device media position offset     */
  1453.                              /* in the currently specified device units.       */
  1454. } MCI_SYNC_OFFSET_PARMS;
  1455. typedef MCI_SYNC_OFFSET_PARMS   *LPMCI_SYNC_OFFSET_PARMS;
  1456.  
  1457. /*********************************************************************/
  1458. /* flags for the MCI_SPIN message                                    */
  1459. /*     0x00000X00 are reserved for MCI_SPIN flags                    */
  1460. /*********************************************************************/
  1461. #define MCI_SPIN_UP                         0x00000100L
  1462. #define MCI_SPIN_DOWN                       0x00000200L
  1463.  
  1464. /*********************************************************************/
  1465. /* MCI_STATUS message flags                                          */
  1466. /*     0x000XXX00 are reserved for MCI_STATUS flags                  */
  1467. /*     MCI_VOLUME and MCI_VOLUME_DELAY are 0x00000100 and 0x00000200 */
  1468. /*********************************************************************/
  1469. #define MCI_STATUS_ITEM                     0x00000100L
  1470. #define MCI_STATUS_START                    0x00000200L
  1471.  
  1472. /*************************************************/
  1473. /* General MCI_STATUS item values                */
  1474. /*************************************************/
  1475. #define MCI_STATUS_CURRENT_TRACK            0x00000001L
  1476. #define MCI_STATUS_LENGTH                   0x00000002L
  1477. #define MCI_STATUS_MODE                     0x00000003L
  1478. #define MCI_STATUS_NUMBER_OF_TRACKS         0x00000004L
  1479. #define MCI_STATUS_POSITION                 0x00000005L
  1480. #define MCI_STATUS_POSITION_IN_TRACK        0x00000006L
  1481. #define MCI_STATUS_MEDIA_PRESENT            0x00000007L
  1482. #define MCI_STATUS_VOLUME                   0x00000008L
  1483. #define MCI_STATUS_READY                    0x00000009L
  1484. #define MCI_STATUS_TIME_FORMAT              0x0000000AL
  1485. #define MCI_STATUS_SPEED_FORMAT             0x0000000BL
  1486. #define MCI_STATUS_MONITOR                  0x0000000CL
  1487. #define MCI_STATUS_AUDIO                    0x0000000DL
  1488. #define MCI_STATUS_VIDEO                    0x0000000EL
  1489. #define MCI_STATUS_CLIPBOARD                0x0000000FL
  1490.  
  1491.    /*************************************************/
  1492.    /* dwValue field values for MCI_STATUS_AUDIO     */
  1493.    /*************************************************/
  1494. #define MCI_STATUS_AUDIO_ALL                   0x00000000L
  1495. #define MCI_STATUS_AUDIO_LEFT                  0x00000001L
  1496. #define MCI_STATUS_AUDIO_RIGHT                 0x00000002L
  1497.  
  1498. /*************************************************/
  1499. /* MCI_STATUS item values for amp/mixer          */
  1500. /*************************************************/
  1501. #define MCI_AMP_STATUS_PITCH                MCI_AMP_ITEM_BASE
  1502. #define MCI_AMP_STATUS_TREBLE               (MCI_AMP_ITEM_BASE+1)
  1503. #define MCI_AMP_STATUS_BASS                 (MCI_AMP_ITEM_BASE+2)
  1504. #define MCI_AMP_STATUS_BALANCE              (MCI_AMP_ITEM_BASE+3)
  1505. #define MCI_AMP_STATUS_GAIN                 (MCI_AMP_ITEM_BASE+4)
  1506. #define MCI_AMP_STATUS_MONITOR              (MCI_AMP_ITEM_BASE+5)
  1507.  
  1508. /*************************************************/
  1509. /* MCI_STATUS item values for cd audio           */
  1510. /*************************************************/
  1511. #define MCI_CD_STATUS_TRACK_TYPE            MCI_CD_ITEM_BASE
  1512. #define MCI_CD_STATUS_TRACK_COPYPERMITTED   (MCI_CD_ITEM_BASE+1)
  1513. #define MCI_CD_STATUS_TRACK_CHANNELS        (MCI_CD_ITEM_BASE+2)
  1514. #define MCI_CD_STATUS_TRACK_PREEMPHASIS     (MCI_CD_ITEM_BASE+3)
  1515.  
  1516.     /************************************************/
  1517.     /* return values for CD MCI_STATUS message with */
  1518.     /*   MCI_CD_STATUS_TRACK_TYPE set               */
  1519.     /************************************************/
  1520. #define MCI_CD_TRACK_AUDIO                  0x00000001L
  1521. #define MCI_CD_TRACK_DATA                   0x00000002L
  1522. #define MCI_CD_TRACK_OTHER                  0x00000003L
  1523.  
  1524. /*************************************************/
  1525. /* MCI_STATUS item values for CDXA               */
  1526. /*************************************************/
  1527. #define MCI_CDXA_STATUS_CHANNEL             MCI_CDXA_ITEM_BASE
  1528.  
  1529.     /************************************************/
  1530.     /*returned from call for MCI_CDXA_STATUS_CHANNEL*/
  1531.     /************************************************/
  1532. #define MCI_CDXA_NONE                       0x00000000L
  1533.  
  1534.  
  1535. /*************************************************/
  1536. /* MCI_STATUS item values for sequencer          */
  1537. /*************************************************/
  1538. #define MCI_SEQ_STATUS_TEMPO                MCI_SEQ_ITEM_BASE
  1539. #define MCI_SEQ_STATUS_OFFSET               (MCI_SEQ_ITEM_BASE+1)
  1540. #define MCI_SEQ_STATUS_DIVTYPE              (MCI_SEQ_ITEM_BASE+2)
  1541. #define MCI_SEQ_STATUS_MASTER               (MCI_SEQ_ITEM_BASE+3)
  1542. #define MCI_SEQ_STATUS_PORT                 (MCI_SEQ_ITEM_BASE+4)
  1543. #define MCI_SEQ_STATUS_SLAVE                (MCI_SEQ_ITEM_BASE+5)
  1544.  
  1545.    /**********************************************/
  1546.    /* Return value for current division type     */
  1547.    /**********************************************/
  1548. #define MCI_SEQ_DIV_PPQN                    0x00000001L
  1549. #define MCI_SEQ_DIV_SMPTE_24                0x00000002L
  1550. #define MCI_SEQ_DIV_SMPTE_25                0x00000003L
  1551. #define MCI_SEQ_DIV_SMPTE_30DROP            0x00000004L
  1552. #define MCI_SEQ_DIV_SMPTE_30                0x00000005L
  1553.  
  1554.    /*************************************************/
  1555.    /* MCI_STATUS items for videodisc                */
  1556.    /*************************************************/
  1557. #define MCI_VD_STATUS_SPEED                 MCI_VD_ITEM_BASE
  1558. #define MCI_VD_STATUS_FORWARD               (MCI_VD_ITEM_BASE+1)
  1559. #define MCI_VD_MEDIA_TYPE                   (MCI_VD_ITEM_BASE+2)
  1560. #define MCI_VD_STATUS_SIDE                  (MCI_VD_ITEM_BASE+3)
  1561. #define MCI_VD_STATUS_DISC_SIZE             (MCI_VD_ITEM_BASE+4)
  1562.  
  1563.     /***********************************************/
  1564.     /* return values for videodisc status command  */
  1565.     /***********************************************/
  1566. #define MCI_VD_SPEED_NORMAL                 0x00000000L
  1567. #define MCI_VD_SPEED_FAST                   0x00000001L
  1568. #define MCI_VD_SPEED_SLOW                   0x00000002L
  1569.  
  1570. /*************************************************/
  1571. /* MCI_STATUS items for wave audio               */
  1572. /*************************************************/
  1573. #define MCI_WAVE_STATUS_LEVEL               MCI_WAVE_ITEM_BASE
  1574. #define MCI_WAVE_STATUS_SAMPLESPERSEC       (MCI_WAVE_ITEM_BASE+1)
  1575. #define MCI_WAVE_STATUS_AVGBYTESPERSEC      (MCI_WAVE_ITEM_BASE+2)
  1576. #define MCI_WAVE_STATUS_BLOCKALIGN          (MCI_WAVE_ITEM_BASE+3)
  1577. #define MCI_WAVE_STATUS_FORMATTAG           (MCI_WAVE_ITEM_BASE+4)
  1578. #define MCI_WAVE_STATUS_CHANNELS            (MCI_WAVE_ITEM_BASE+5)
  1579. #define MCI_WAVE_STATUS_BITSPERSAMPLE       (MCI_WAVE_ITEM_BASE+6)
  1580.  
  1581. /*************************************************/
  1582. /* Common video MCI_STATUS items                 */
  1583. /*************************************************/
  1584. #define MCI_VID_STATUS_HWND                 MCI_VID_ITEM_BASE
  1585. #define MCI_VID_STATUS_AUDIO_COMPRESSION    (MCI_VID_ITEM_BASE+1)
  1586. #define MCI_VID_STATUS_VIDEO_COMPRESSION    (MCI_VID_ITEM_BASE+2)
  1587. #define MCI_VID_STATUS_IMAGE_COMPRESSION    (MCI_VID_ITEM_BASE+3)
  1588. #define MCI_VID_STATUS_AUDIO_QUALITY        (MCI_VID_ITEM_BASE+4)
  1589. #define MCI_VID_STATUS_VIDEO_QUALITY        (MCI_VID_ITEM_BASE+5)
  1590. #define MCI_VID_STATUS_IMAGE_QUALITY        (MCI_VID_ITEM_BASE+6)
  1591. #define MCI_VID_STATUS_IMAGE_BITSPERPEL     (MCI_VID_ITEM_BASE+7)
  1592. #define MCI_VID_STATUS_IMAGE_PELFORMAT      (MCI_VID_ITEM_BASE+8)
  1593. #define MCI_VID_STATUS_FORWARD              (MCI_VID_ITEM_BASE+9)
  1594. #define MCI_VID_STATUS_NORMAL_RATE          (MCI_VID_ITEM_BASE+10)
  1595. #define MCI_VID_STATUS_VIDEO_X_EXTENT       (MCI_VID_ITEM_BASE+11)
  1596. #define MCI_VID_STATUS_VIDEO_Y_EXTENT       (MCI_VID_ITEM_BASE+12)
  1597. #define MCI_VID_STATUS_IMAGE_X_EXTENT       (MCI_VID_ITEM_BASE+13)
  1598. #define MCI_VID_STATUS_IMAGE_Y_EXTENT       (MCI_VID_ITEM_BASE+14)
  1599. #define MCI_VID_STATUS_BRIGHTNESS           (MCI_VID_ITEM_BASE+15)
  1600. #define MCI_VID_STATUS_CONTRAST             (MCI_VID_ITEM_BASE+16)
  1601. #define MCI_VID_STATUS_HUE                  (MCI_VID_ITEM_BASE+17)
  1602. #define MCI_VID_STATUS_SATURATION           (MCI_VID_ITEM_BASE+18)
  1603. #define MCI_VID_STATUS_GREYSCALE            (MCI_VID_ITEM_BASE+19)
  1604. #define MCI_VID_STATUS_SHARPNESS            (MCI_VID_ITEM_BASE+20)
  1605. #define MCI_VID_STATUS_SPEED                (MCI_VID_ITEM_BASE+21)
  1606. #define MCI_VID_STATUS_IMAGE_FILE_FORMAT    (MCI_VID_ITEM_BASE+22)
  1607. #define MCI_VID_STATUS_TRANSPARENT_TYPE     (MCI_VID_ITEM_BASE+23)
  1608. #define MCI_VID_STATUS_REF_INTERVAL         (MCI_VID_ITEM_BASE+24)
  1609. #define MCI_VID_STATUS_MAXDATARATE          (MCI_VID_ITEM_BASE+25)
  1610. #define MCI_VID_STATUS_VIDEO_FILE_FORMAT    (MCI_VID_ITEM_BASE+26)
  1611.  
  1612.    /*************************************************/
  1613.    /* Status Transparent Type returns               */
  1614.    /* MCI_VID_PALETTE                               */
  1615.    /* MCI_VID_RGB                                   */
  1616.    /* MCI_VID_YUV                                   */
  1617.    /*************************************************/
  1618. #define MCI_VID_STATUS_TRANSPARENT_COLOR    (MCI_VID_ITEM_BASE+24)
  1619.  
  1620. /*************************************************/
  1621. /* MCI_STATUS items for digital video            */
  1622. /*************************************************/
  1623. #define MCI_DGV_STATUS_HWND                 MCI_VID_STATUS_HWND
  1624. #define MCI_DGV_STATUS_AUDIO_COMPRESSION    MCI_VID_STATUS_AUDIO_COMPRESSION
  1625. #define MCI_DGV_STATUS_VIDEO_COMPRESSION    MCI_VID_STATUS_VIDEO_COMPRESSION
  1626. #define MCI_DGV_STATUS_IMAGE_COMPRESSION    MCI_VID_STATUS_IMAGE_COMPRESSION
  1627. #define MCI_DGV_STATUS_AUDIO_QUALITY        MCI_VID_STATUS_AUDIO_QUALITY
  1628. #define MCI_DGV_STATUS_VIDEO_QUALITY        MCI_VID_STATUS_VIDEO_QUALITY
  1629. #define MCI_DGV_STATUS_IMAGE_QUALITY        MCI_VID_STATUS_IMAGE_QUALITY
  1630. #define MCI_DGV_STATUS_IMAGE_BITSPERPEL     MCI_VID_STATUS_IMAGE_BITSPERPEL
  1631. #define MCI_DGV_STATUS_IMAGE_PELFORMAT      MCI_VID_STATUS_IMAGE_PELFORMAT
  1632. #define MCI_DGV_STATUS_FORWARD              MCI_VID_STATUS_FORWARD
  1633. #define MCI_DGV_STATUS_NORMAL_RATE          MCI_VID_STATUS_NORMAL_RATE
  1634. #define MCI_DGV_STATUS_VIDEO_X_EXTENT       MCI_VID_STATUS_VIDEO_X_EXTENT
  1635. #define MCI_DGV_STATUS_VIDEO_Y_EXTENT       MCI_VID_STATUS_VIDEO_Y_EXTENT
  1636. #define MCI_DGV_STATUS_IMAGE_X_EXTENT       MCI_VID_STATUS_IMAGE_X_EXTENT
  1637. #define MCI_DGV_STATUS_IMAGE_Y_EXTENT       MCI_VID_STATUS_IMAGE_Y_EXTENT
  1638. #define MCI_DGV_STATUS_BRIGHTNESS           MCI_VID_STATUS_BRIGHTNESS
  1639. #define MCI_DGV_STATUS_CONTRAST             MCI_VID_STATUS_CONTRAST
  1640. #define MCI_DGV_STATUS_HUE                  MCI_VID_STATUS_HUE
  1641. #define MCI_DGV_STATUS_SATURATION           MCI_VID_STATUS_SATURATION
  1642. #define MCI_DGV_STATUS_SPEED                MCI_VID_STATUS_SPEED
  1643. #define MCI_DGV_STATUS_SHARPNESS            MCI_VID_STATUS_SHARPNESS
  1644. #define MCI_DGV_STATUS_REF_INTERVAL         MCI_VID_STATUS_REF_INTERVAL
  1645. #define MCI_DGV_STATUS_MAXDATARATE          MCI_VID_STATUS_MAXDATARATE
  1646. #define MCI_DGV_STATUS_VIDEO_FILE_FORMAT    MCI_VID_STATUS_VIDEO_FILE_FORMAT
  1647.  
  1648. /*************************************************/
  1649. /* MCI_STATUS item values for video overlay      */
  1650. /*************************************************/
  1651. #define MCI_OVLY_STATUS_HWND                 MCI_VID_STATUS_HWND
  1652. #define MCI_OVLY_STATUS_IMAGE_COMPRESSION    MCI_VID_STATUS_IMAGE_COMPRESSION
  1653. #define MCI_OVLY_STATUS_IMAGE_BITSPERPEL     MCI_VID_STATUS_IMAGE_BITSPERPEL
  1654. #define MCI_OVLY_STATUS_IMAGE_PELFORMAT      MCI_VID_STATUS_IMAGE_PELFORMAT
  1655. #define MCI_OVLY_STATUS_IMAGE_X_EXTENT       MCI_VID_STATUS_IMAGE_X_EXTENT
  1656. #define MCI_OVLY_STATUS_IMAGE_Y_EXTENT       MCI_VID_STATUS_IMAGE_Y_EXTENT
  1657. #define MCI_OVLY_STATUS_BRIGHTNESS           MCI_VID_STATUS_BRIGHTNESS
  1658. #define MCI_OVLY_STATUS_CONTRAST             MCI_VID_STATUS_CONTRAST
  1659. #define MCI_OVLY_STATUS_HUE                  MCI_VID_STATUS_HUE
  1660. #define MCI_OVLY_STATUS_SATURATION           MCI_VID_STATUS_SATURATION
  1661. #define MCI_OVLY_STATUS_GREYSCALE            MCI_VID_STATUS_GREYSCALE
  1662. #define MCI_OVLY_STATUS_IMAGE_QUALITY        MCI_VID_STATUS_IMAGE_QUALITY
  1663. #define MCI_OVLY_STATUS_SHARPNESS            MCI_VID_STATUS_SHARPNESS
  1664. #define MCI_OVLY_STATUS_IMAGE_FILE_FORMAT    MCI_VID_STATUS_IMAGE_FILE_FORMAT
  1665. #define MCI_OVLY_STATUS_TRANSPARENT_TYPE     MCI_VID_STATUS_TRANSPARENT_TYPE
  1666. #define MCI_OVLY_STATUS_TRANSPARENT_COLOR    MCI_VID_STATUS_TRANSPARENT_COLOR
  1667.  
  1668.    /*************************************************/
  1669.    /* Status Mode return values                     */
  1670.    /*************************************************/
  1671. #define MCI_MODE_NOT_READY                  0x00000001L
  1672. #define MCI_MODE_PAUSE                      0x00000002L
  1673. #define MCI_MODE_PLAY                       0x00000003L
  1674. #define MCI_MODE_STOP                       0x00000004L
  1675. #define MCI_MODE_RECORD                     0x00000005L
  1676. #define MCI_MODE_SEEK                       0x00000006L
  1677.  
  1678. typedef struct _MCI_STATUS_PARMS {
  1679.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1680.     DWORD   dwReturn;        /* Return field                            */
  1681.     DWORD   dwItem;          /* Item field for STATUS item to query     */
  1682.     DWORD   dwValue;         /* Status value field (this used to be)    */
  1683.                              /*  dwTrack but was changed in Rel 1.1     */
  1684.                              /*  to extend the status structure.        */
  1685.                              /*  See the programming reference on when  */
  1686.                              /*  dwValue is used and how...             */
  1687. } MCI_STATUS_PARMS;
  1688. typedef MCI_STATUS_PARMS   *LPMCI_STATUS_PARMS;
  1689.  
  1690.  
  1691. typedef struct _MCI_CDXA_STATUS_PARMS {
  1692.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1693.     DWORD   dwReturn;        /* Return field                            */
  1694.     DWORD   dwItem;          /* Item field for STATUS item to query     */
  1695.     DWORD   dwValue;         /* Status value field (this used to be)    */
  1696.                              /*  dwTrack but was changed in Rel 1.1     */
  1697.                              /*  to extend the status structure.        */
  1698.                              /*  See the programming reference on when  */
  1699.                              /*  dwValue is used and how...             */
  1700.     DWORD   dwChannel;       /* Channel                                 */
  1701. } MCI_CDXA_STATUS_PARMS;
  1702. typedef MCI_CDXA_STATUS_PARMS   *LPMCI_CDXA_STATUS_PARMS;
  1703.  
  1704. /*********************************************************************/
  1705. /* flags and parameter structure for the MCI_STEP message            */
  1706. /*     0x00000X00 are reserved for MCI_STEP flags                    */
  1707. /*********************************************************************/
  1708. #define MCI_STEP_FRAMES                     0x00000100L
  1709. #define MCI_STEP_REVERSE                    0x00000200L
  1710.  
  1711. typedef struct _MCI_STEP_PARMS {
  1712.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1713.     DWORD   dwStep;          /* amount to step in current time format   */
  1714. } MCI_STEP_PARMS;
  1715. typedef MCI_STEP_PARMS   *LPMCI_STEP_PARMS;
  1716.  
  1717. /*********************************************************************/
  1718. /* flags for the MCI_SYSINFO message                                 */
  1719. /*     0xXXXXXX00 are reserved for MCI_SYSINFO flags                 */
  1720. /*********************************************************************/
  1721. #define MCI_SYSINFO_QUANTITY                0x00000100L
  1722. #define MCI_SYSINFO_OPEN                    0x00000200L
  1723. #define MCI_SYSINFO_NAME                    0x00000400L
  1724. #define MCI_SYSINFO_INSTALLNAME             0x00000800L
  1725. #define MCI_SYSINFO_ITEM                    0x00001000L
  1726. #define MCI_SYSINFO_INI_LOCK                0x00002000L
  1727.  
  1728.     /********************************************************/
  1729.     /* Extended SYSINFO functions                            /
  1730.     /********************************************************/
  1731.     #define MCI_SYSINFO_INSTALL_DRIVER      0x00000001L
  1732.     #define MCI_SYSINFO_QUERY_DRIVER        0x00000002L
  1733.     #define MCI_SYSINFO_DELETE_DRIVER       0x00000004L
  1734.     #define MCI_SYSINFO_SET_PARAMS          0x00000008L
  1735.     #define MCI_SYSINFO_QUERY_PARAMS        0x00000010L
  1736.     #define MCI_SYSINFO_SET_CONNECTORS      0x00000020L
  1737.     #define MCI_SYSINFO_QUERY_CONNECTORS    0x00000040L
  1738.     #define MCI_SYSINFO_SET_EXTENSIONS      0x00000080L
  1739.     #define MCI_SYSINFO_QUERY_EXTENSIONS    0x00000100L
  1740.     #define MCI_SYSINFO_SET_ALIAS           0x00000200L
  1741.     #define MCI_SYSINFO_QUERY_NAMES         0x00000400L
  1742.     #define MCI_SYSINFO_SET_DEFAULT         0x00000800L
  1743.     #define MCI_SYSINFO_QUERY_DEFAULT       0x00001000L
  1744.     #define MCI_SYSINFO_SET_TYPES           0x00002000L
  1745.     #define MCI_SYSINFO_QUERY_TYPES         0x00004000L
  1746.  
  1747.     /********************************************************/
  1748.     /* Device Flags                                          /
  1749.     /********************************************************/
  1750.     #define MCI_SYSINFO_DEV_CONTROLLABLE    0x00000001L
  1751.     #define MCI_SYSINFO_DEV_NONCONTROLLABLE 0x00000002L
  1752.     #define MCI_SYSINFO_DEVICESETTINGS      0x00000004L
  1753.  
  1754. /*********************************************************************/
  1755. /* parameter structures for the MCI_SYSINFO message                  */
  1756. /*********************************************************************/
  1757. typedef struct _MCI_SYSINFO_PARMS {
  1758.     DWORD   dwDummyCallback; /* NOTIFY not allowed for SYSINFO          */
  1759.     LPSTR   lpstrReturn;     /* Pointer to return buffer                */
  1760.     DWORD   dwRetSize;       /* Return buffer size                      */
  1761.     DWORD   dwNumber;        /* Ordinal Number                          */
  1762.     WORD    wDeviceType;     /* MCI device type number                  */
  1763.     WORD    wReserved0;      /* Reserved field                          */
  1764.     DWORD   dwItem;          /* Used to indicate the MCI_SYSINFO        */
  1765.                              /* extended function to perform            */
  1766.     PVOID   pSysInfoParm;
  1767. } MCI_SYSINFO_PARMS;
  1768. typedef MCI_SYSINFO_PARMS   *LPMCI_SYSINFO_PARMS;
  1769.  
  1770. typedef struct _MCI_SYSINFO_LOGDEVICE {
  1771.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1772.     USHORT  usDeviceType;                         /* Device type number             */
  1773.     ULONG   ulDeviceFlag;                         /* Flag indicating whether device */
  1774.                                                   /*  device is controllable or not */
  1775.     CHAR    szVersionNumber[MAX_VERSION_NUMBER];  /* INI file version number        */
  1776.     CHAR    szProductInfo[MAX_PRODINFO];          /* Textual product description    */
  1777.     CHAR    szMCDDriver[MAX_DEVICE_NAME];         /* MCI Driver dll name            */
  1778.     CHAR    szVSDDriver[MAX_DEVICE_NAME];         /* VSD dll name                   */
  1779.     CHAR    szPDDName[MAX_PDD_NAME];              /* Device PDD name                */
  1780.     CHAR    szMCDTable[MAX_DEVICE_NAME];          /* Device type command table      */
  1781.     CHAR    szVSDTable[MAX_DEVICE_NAME];          /* Device specific command table  */
  1782.     USHORT  usShareType;                          /* Device sharing mode            */
  1783.     CHAR    szResourceName[MAX_DEVICE_NAME];      /* Resource name                  */
  1784.     USHORT  usResourceUnits;                      /* Total resource units available */
  1785.                                                   /*  for this device               */
  1786.     USHORT  usResourceClasses;                    /* Number of resource classes for */
  1787.                                                   /*  this device                   */
  1788.     USHORT  ausClassArray[MAX_CLASSES];           /* Maximum number of resource     */
  1789.                                                   /*  units for each class          */
  1790.     USHORT  ausValidClassArray[MAX_CLASSES][MAX_CLASSES]; /* Valid class combinations */
  1791. } MCI_SYSINFO_LOGDEVICE;
  1792. typedef MCI_SYSINFO_LOGDEVICE  *LPMCI_SYSINFO_LOGDEVICE;
  1793.  
  1794.  
  1795. typedef struct _MCI_SYSINFO_DEVPARAMS {
  1796.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1797.     CHAR    szDevParams[MAX_DEV_PARAMS];          /* Device specific parameters     */
  1798. } MCI_SYSINFO_DEVPARAMS;
  1799. typedef MCI_SYSINFO_DEVPARAMS *LPMCI_SYSINFO_DEVPARAMS;
  1800.  
  1801. typedef struct _CONNECT {
  1802.     WORD   wConnectType;                          /* Connector type                 */
  1803.     CHAR   szToInstallName[MAX_DEVICE_NAME];      /* Install name this connector    */
  1804.                                                   /*  is connected to               */
  1805.     WORD   wToConnectIndex;                       /* Connector index this connector */
  1806.                                                   /*  is connected to               */
  1807. } CONNECT;
  1808. typedef CONNECT *PCONNECT;
  1809.  
  1810.  
  1811. typedef struct _MCI_SYSINFO_CONPARAMS {
  1812.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1813.     USHORT  usNumConnectors;                      /* Number of device connectors    */
  1814.     CONNECT ConnectorList[MAX_CONNECTORS];        /* Connector list array           */
  1815. } MCI_SYSINFO_CONPARAMS;
  1816. typedef MCI_SYSINFO_CONPARAMS *LPMCI_SYSINFO_CONPARAMS;
  1817.  
  1818. typedef struct _MCI_SYSINFO_EXTENSION {
  1819.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name            */
  1820.     USHORT  usNumExtensions;                      /* Number of extensions           */
  1821.     CHAR    szExtension[MAX_EXTENSIONS][MAX_EXTENSION_NAME];
  1822.                                                   /* Extension name array           */
  1823. } MCI_SYSINFO_EXTENSION;
  1824. typedef MCI_SYSINFO_EXTENSION *LPMCI_SYSINFO_EXTENSION;
  1825.  
  1826. typedef struct _MCI_SYSINFO_ALIAS {
  1827.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  1828.     CHAR    szAliasName[MAX_ALIAS_NAME];          /* Alias name           */
  1829. } MCI_SYSINFO_ALIAS;
  1830. typedef MCI_SYSINFO_ALIAS *LPMCI_SYSINFO_ALIAS;
  1831.  
  1832. typedef struct _MCI_SYSINFO_DEFAULTDEVICE {
  1833.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  1834.     USHORT  usDeviceType;                         /* Device type number   */
  1835. } MCI_SYSINFO_DEFAULTDEVICE;
  1836. typedef MCI_SYSINFO_DEFAULTDEVICE *LPMCI_SYSINFO_DEFAULTDEVICE;
  1837.  
  1838. typedef struct _MCI_SYSINFO_QUERY_NAME {
  1839.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  1840.     CHAR    szLogicalName[MAX_DEVICE_NAME];       /* Logical device name  */
  1841.     CHAR    szAliasName[MAX_ALIAS_NAME];          /* Alias name           */
  1842.     USHORT  usDeviceType;                         /* Device type number   */
  1843.     USHORT  usDeviceOrd;                          /* Device type ordinal  */
  1844. } MCI_SYSINFO_QUERY_NAME;
  1845. typedef MCI_SYSINFO_QUERY_NAME *LPMCI_SYSINFO_QUERY_NAME;
  1846.  
  1847. typedef struct _MCI_SYSINFO_TYPES {
  1848.     CHAR    szInstallName[MAX_DEVICE_NAME];       /* Device install name  */
  1849.     CHAR    szTypes[MAX_TYPEBUFFER+1];            /* EA types             */
  1850. } MCI_SYSINFO_TYPES;
  1851. typedef MCI_SYSINFO_TYPES *LPMCI_SYSINFO_TYPES;
  1852.  
  1853.  
  1854. /*********************************************************************/
  1855. /* flags for the MCI_UNFREEZE message                                */
  1856. /*     0x00000X00 are reserved for MCI_UNFREEZE flags                */
  1857. /*********************************************************************/
  1858. #define MCI_OVLY_UNFREEZE_RECT              0x00000100L
  1859. #define MCI_OVLY_UNFREEZE_RECT_OUTSIDE      0x00000200L
  1860.  
  1861. /*********************************************************************/
  1862. /* flags for the MCI_WHERE message                                   */
  1863. /*     0x0000XX00 are reserved for MCI_WHERE flags                   */
  1864. /*********************************************************************/
  1865. #define MCI_VID_WHERE_DESTINATION           0x00000100L
  1866. #define MCI_VID_WHERE_SOURCE                0x00000200L
  1867. #define MCI_VID_WHERE_WINDOW                0x00000400L
  1868.  
  1869. #define MCI_DGV_WHERE_DESTINATION           MCI_VID_WHERE_DESTINATION
  1870. #define MCI_DGV_WHERE_SOURCE                MCI_VID_WHERE_SOURCE
  1871. #define MCI_DGV_WHERE_WINDOW                MCI_VID_WHERE_WINDOW
  1872.  
  1873. #define MCI_OVLY_WHERE_DESTINATION          MCI_VID_WHERE_DESTINATION
  1874. #define MCI_OVLY_WHERE_SOURCE               MCI_VID_WHERE_SOURCE
  1875. #define MCI_OVLY_WHERE_WINDOW               MCI_VID_WHERE_WINDOW
  1876.  
  1877. /*********************************************************************/
  1878. /* flags and parameter structure for the MCI_WINDOW message          */
  1879. /*     0x0000XX00   are reserved for MCI_WINDOW flags                */
  1880. /*********************************************************************/
  1881. #define MCI_VID_WINDOW_HWND                 0x00000100L
  1882. #define MCI_VID_WINDOW_STATE                0x00000200L
  1883. #define MCI_VID_WINDOW_TEXT                 0x00000400L
  1884. #define MCI_VID_WINDOW_DEFAULT              0x00000800L
  1885.  
  1886. #define MCI_DGV_WINDOW_HWND                 MCI_VID_WINDOW_HWND
  1887. #define MCI_DGV_WINDOW_STATE                MCI_VID_WINDOW_STATE
  1888. #define MCI_DGV_WINDOW_TEXT                 MCI_VID_WINDOW_TEXT
  1889. #define MCI_DGV_WINDOW_DEFAULT              MCI_VID_WINDOW_DEFAULT
  1890.  
  1891. #define MCI_OVLY_WINDOW_HWND                MCI_VID_WINDOW_HWND
  1892. #define MCI_OVLY_WINDOW_STATE               MCI_VID_WINDOW_STATE
  1893. #define MCI_OVLY_WINDOW_TEXT                MCI_VID_WINDOW_TEXT
  1894. #define MCI_OVLY_WINDOW_DEFAULT             MCI_VID_WINDOW_DEFAULT
  1895.  
  1896. typedef  struct _MCI_VID_WINDOW_PARMS{
  1897.     DWORD   dwCallback;      /* PM window handle for MCI notify message */
  1898.     HWND    hwndDest;        /* Handle to the client window used for    */
  1899.                              /* the destination of the video image      */
  1900.     WORD    wCmdShow;        /* Specifies how the window is displayed   */
  1901.     WORD    wReserved1;      /* Reserved                                */
  1902.     LPSTR   lpstrText;       /* The text to use as the window caption   */
  1903.     LPSTR   lpstrAlias;      /* The window alias for the display window */
  1904. } MCI_VID_WINDOW_PARMS;
  1905.  
  1906. typedef MCI_VID_WINDOW_PARMS   MCI_DGV_WINDOW_PARMS;
  1907. typedef MCI_DGV_WINDOW_PARMS   *LPMCI_DGV_WINDOW_PARMS;
  1908.  
  1909. typedef MCI_VID_WINDOW_PARMS   MCI_OVLY_WINDOW_PARMS;
  1910. typedef MCI_OVLY_WINDOW_PARMS  *LPMCI_OVLY_WINDOW_PARMS;
  1911.  
  1912.  
  1913. #pragma pack()
  1914. /*********************************************************************/
  1915. /*                                                                   */
  1916. /*  MCI system value defines                                         */
  1917. /*                                                                   */
  1918. /*********************************************************************/
  1919. #define MSV_CLOSEDCAPTION                   0x0
  1920. #define MSV_MASTERVOLUME                    0x1
  1921. #define MSV_HEADPHONES                      0x2
  1922. #define MSV_SPEAKERS                        0x3
  1923. #define MSV_WORKPATH                        0x4
  1924. #define MSV_SYSQOSVALUE                     0x5
  1925. #define MSV_SYSQOSERRORFLAG                 0x6
  1926.  
  1927. #define MSV_MAX                             0x7
  1928.  
  1929. #endif                       /* INCL_32 */
  1930.  
  1931. /*********************************************************************/
  1932. /* Playlist defines                                                  */
  1933. /*********************************************************************/
  1934. #define DATA_OPERATION                      0
  1935. #define BRANCH_OPERATION                    1
  1936. #define LOOP_OPERATION                      2
  1937. #define CALL_OPERATION                      3
  1938. #define RETURN_OPERATION                    4
  1939. #define EXIT_OPERATION                      5
  1940. #define NOP_OPERATION                       6
  1941. #define MESSAGE_OPERATION                   7
  1942. #define CUEPOINT_OPERATION                  8
  1943.  
  1944. /*********************************************************************/
  1945. /*                                                                   */
  1946. /*  MCI Function prototypes                                          */
  1947. /*                                                                   */
  1948. /*********************************************************************/
  1949.  
  1950. #ifdef INCL_32
  1951.  
  1952. DWORD APIENTRY mciSendCommand   (WORD   wDeviceID,
  1953.                                  WORD   wMessage,
  1954.                                  DWORD  dwParam1,
  1955.                                  DWORD  dwParam2,
  1956.                                  WORD   wUserParm);
  1957.  
  1958. DWORD APIENTRY  mciSendString   (LPSTR lpstrCommandBuf,
  1959.                                  LPSTR lpstrReturnString,
  1960.                                  WORD  wReturnLength,
  1961.                                  HWND  hCallBack,
  1962.                                  WORD  wUserParm );
  1963.  
  1964. DWORD APIENTRY mciGetErrorString(DWORD   dwError,
  1965.                                  LPSTR   lpstrBuffer,
  1966.                                  WORD    wLength);
  1967.  
  1968.  
  1969. DWORD APIENTRY mciMakeGroup     (PW      pwDeviceGroupID,
  1970.                                  WORD    wDeviceCount,
  1971.                                  PAW     pawDeviceList,
  1972.                                  DWORD   dwFlags,
  1973.                                  DWORD   dwMMTime);
  1974.  
  1975.  
  1976. DWORD APIENTRY mciDeleteGroup   (WORD   wGroupID);
  1977.  
  1978.  
  1979.  
  1980. BOOL APIENTRY mciSetSysValue (USHORT iSysValue, PVOID pValue);
  1981.  
  1982. BOOL  APIENTRY mciQuerySysValue (USHORT iSysValue, PVOID pValue);
  1983.  
  1984. DWORD  APIENTRY mciGetDeviceID  (LPSTR  lpstrName);
  1985.  
  1986. #else                        /* INCL_32 */
  1987.  
  1988. #define mciSendString mci16SendString
  1989. #define mciGetErrorString mci16GetErrorString
  1990. #define mciGetDeviceID mci16GetDeviceID
  1991.  
  1992. ULONG APIENTRY  mciSendString   (LPSTR   lpstrCommandBuf,
  1993.                                  LPSTR   lpstrReturnString,
  1994.                                  WORD    wReturnLength,
  1995.                                  HWND    hCallBack,
  1996.                                  WORD    wUserParm );
  1997.  
  1998. ULONG APIENTRY mciGetErrorString    (DWORD  dwError,
  1999.                                      LPSTR  lpstrBuffer,
  2000.                                      WORD   wLength);
  2001.  
  2002. ULONG APIENTRY mciGetDeviceID  (LPSTR  lpstrName);
  2003.  
  2004.  
  2005. #endif                       /* INCL_32 */
  2006.