home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / misc / vfwdk / inc / mciwnd.h < prev    next >
Text File  |  1993-02-04  |  8KB  |  177 lines

  1. /*----------------------------------------------------------------------------*\
  2.  *
  3.  *  MCIWnd
  4.  *
  5.  *    MCIWnd window class header file.
  6.  *
  7.  *    the MCIWnd window class is a window class for controling MCI devices
  8.  *    MCI devices include, wave files, midi files, AVI Video, cd audio,
  9.  *    vcr, video disc, and others..
  10.  *
  11.  *    to learn more about MCI and mci command sets see the
  12.  *    "Microsoft Multimedia Programmers's guide" in the Win31 SDK
  13.  *
  14.  *    the easiest use of the MCIWnd class is like so:
  15.  *
  16.  *          hwnd = MCIWndCreate(hwndParent, hInstance, 0, "smag.wav");
  17.  *          ...
  18.  *          MCIWndPlay(hwnd);
  19.  *          MCIWndStop(hwnd);
  20.  *          MCIWndPause(hwnd);
  21.  *          ....
  22.  *          MCIWndDestroy(hwnd);
  23.  *
  24.  *    this will create a window with a play/pause, stop and a playbar
  25.  *    and start the wave file playing.
  26.  *
  27.  *    mciwnd.h defines macros for all the most common MCI commands, but
  28.  *    any string command can be used if needed.  Note unlike the
  29.  *    mciSendString() API, no alias or file name needs to be specifed.
  30.  *
  31.  *          MCIWndSendString(hwnd, "set hue to bright");
  32.  *
  33.  *
  34.  *    NOTE NOTE NOTE this library is in pre-release not all functionality
  35.  *    is complete.
  36.  *
  37.  *    (C) Copyright Microsoft Corp. 1991, 1992, 1993.  All rights reserved.
  38.  *
  39.  *    You have a royalty-free right to use, modify, reproduce and
  40.  *    distribute the Sample Files (and/or any modified version) in
  41.  *    any way you find useful, provided that you agree that
  42.  *    Microsoft has no warranty obligations or liability for any
  43.  *    Sample Application Files.
  44.  *
  45.  *    If you did not get this from Microsoft Sources, then it may not be the
  46.  *    most current version.  This sample code in particular will be updated
  47.  *    and include more documentation.
  48.  *
  49.  *    Sources are:
  50.  *       CompuServe: WINSDK forum, MDK section.
  51.  *       Anonymous FTP from ftp.uu.net vendor\microsoft\multimedia
  52.  *
  53.  *----------------------------------------------------------------------------*/
  54.  
  55. #define MCIWND_WINDOW_CLASS "MCIWndClass"
  56.  
  57. HWND FAR MCIWndCreate(HWND hwndParent, HINSTANCE hInstance,
  58.               DWORD dwStyle,LPSTR szFile);
  59.  
  60. BOOL FAR MCIWndRegisterClass(HINSTANCE hInstance);
  61.  
  62. // window styles
  63. #define MCIWND_NOAUTOSIZE        0x00000001    // no auto size on OPEN
  64. #define MCIWND_NOPLAYBAR        0x00000002    // no toolbar
  65. #define MCIWND_NORESIZETOWINDOW     0x00000004    // no resize movie size to window
  66. #define MCIWND_NOTRACKMENU        0x00000008    // no popup menu
  67. #define MCIWND_NOTIFYSTATE          0x00000010  // tell parent of state change
  68. #define MCIWND_NOTIFYPOS            0x00000020  // tell parent of pos change
  69. #define MCIWND_SHOWNAME             0x00000100  // show name in caption
  70. #define MCIWND_SHOWPOS              0x00000200  // show position in caption
  71. #define MCIWND_SHOWSTATE            0x00000400  // show state in caption
  72. #define MCIWND_SHOWALL              0x00000F00  // show all
  73.  
  74. #define MCIWndOpen(hwnd, sz, f)     (LONG)SendMessage(hwnd, MCI_OPEN, (WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz))
  75. #define MCIWndClose(hwnd)           (LONG)SendMessage(hwnd, MCI_CLOSE, 0, 0)
  76. #define MCIWndPlay(hwnd)            (LONG)SendMessage(hwnd, MCI_PLAY, 0, 0)
  77. #define MCIWndStop(hwnd)            (LONG)SendMessage(hwnd, MCI_STOP, 0, 0)
  78. #define MCIWndPause(hwnd)           (LONG)SendMessage(hwnd, MCI_PAUSE, 0, 0)
  79. #define MCIWndResume(hwnd)          (LONG)SendMessage(hwnd, MCI_RESUME, 0, 0)
  80. #define MCIWndSeek(hwnd, lPos)      (LONG)SendMessage(hwnd, MCI_SEEK, 0, (LPARAM)(LONG)(lPos))
  81.  
  82. #define MCIWndHome(hwnd)            MCIWndSeek(hwnd, MCIWND_START)
  83. #define MCIWndEnd(hwnd)             MCIWndSeek(hwnd, MCIWND_END)
  84.  
  85. #define MCIWndPlayReverse(hwnd)        MCIWndPlayTo(hwnd, MCIWND_START)
  86. #define MCIWndPlayFrom(hwnd, lPos)  (LONG)SendMessage(hwnd, MCIWNDM_PLAYFROM, 0, (LPARAM)(LONG)(lPos))
  87. #define MCIWndPlayTo(hwnd, lPos)    (LONG)SendMessage(hwnd, MCIWNDM_PLAYTO,   0, (LPARAM)(LONG)(lPos))
  88. #define MCIWndPlayFromTo(hwnd, lStart, lEnd) (MCIWndSeek(hwnd, lStart), MCIWndPlayTo(hwnd, lEnd))
  89.  
  90. #define MCIWndGetDeviceID(hwnd)     (UINT)SendMessage(hwnd, MCIWNDM_GETDEVICEID, 0, 0)
  91. #define MCIWndGetMode(hwnd)         (LONG)SendMessage(hwnd, MCIWNDM_GETMODE, 0, 0)
  92. #define MCIWndGetPosition(hwnd)     (LONG)SendMessage(hwnd, MCIWNDM_GETPOSITION, 0, 0)
  93. #define MCIWndGetStart(hwnd)        (LONG)SendMessage(hwnd, MCIWNDM_GETSTART, 0, 0)
  94. #define MCIWndGetLength(hwnd)       (LONG)SendMessage(hwnd, MCIWNDM_GETLENGTH, 0, 0)
  95. #define MCIWndGetEnd(hwnd)          (LONG)SendMessage(hwnd, MCIWNDM_GETEND, 0, 0)
  96.  
  97. #define MCIWndStep(hwnd, n)         (LONG)SendMessage(hwnd, MCI_STEP, 0,(LPARAM)(long)(n))
  98.  
  99. #define MCIWndDestroy(hwnd)         (VOID)SendMessage(hwnd, WM_CLOSE, 0, 0)
  100. #define MCIWndSetZoom(hwnd,iZoom)   (VOID)SendMessage(hwnd, MCIWNDM_SETZOOM, 0, iZoom)
  101. #define MCIWndSetVolume(hwnd,iVol)  (LONG)SendMessage(hwnd, MCIWNDM_SETVOLUME, 0, iVol)
  102. #define MCIWndGetVolume(hwnd)       (LONG)SendMessage(hwnd, MCIWNDM_GETVOLUME, 0, 0)
  103. #define MCIWndSetSpeed(hwnd,iSpeed) (LONG)SendMessage(hwnd, MCIWNDM_SETSPEED, 0, iSpeed)
  104. #define MCIWndGetSpeed(hwnd)        (LONG)SendMessage(hwnd, MCIWNDM_GETSPEED, 0, 0)
  105. #define MCIWndSetRepeat(hwnd,f)     (LONG)SendMessage(hwnd, MCIWNDM_SETREPEAT, 0, f)
  106. #define MCIWndGetRepeat(hwnd)       (LONG)SendMessage(hwnd, MCIWNDM_GETREPEAT, 0, 0)
  107. #define MCIWndSetTimeFormat(hwnd, n) (LONG)SendMessage(hwnd, MCIWNDM_SETTIMEFORMAT, 0, n)
  108. #define MCIWndGetTimeFormat(hwnd)   (LONG)SendMessage(hwnd, MCIWNDM_GETTIMEFORMAT, 0, 0)
  109. #define MCIWndValidateMedia(hwnd)   (VOID)SendMessage(hwnd, MCIWNDM_VALIDATEMEDIA, 0, 0)
  110.  
  111. #define MCIWndUseFrames(hwnd)       MCIWndSetTimeFormat(hwnd,MCIWND_TIMEFORMAT_FRAMES)
  112. #define MCIWndUseTime(hwnd)         MCIWndSetTimeFormat(hwnd,MCIWND_TIMEFORMAT_MS)
  113.  
  114. #define MCIWndRealize(hwnd, fBkgnd) (LONG)SendMessage(hwnd, MCIWNDM_REALIZE,(WPARAM)(BOOL)(fBkgnd),0)
  115.  
  116. #define MCIWndSendString(hwnd, sz)  (LONG)SendMessage(hwnd, MCIWNDM_SENDSTRING, 0, (LPARAM) sz)
  117.  
  118. // Our new Window Messages
  119. #define MCIWNDM_GETDEVICEID    (WM_USER + 0)
  120. #define MCIWNDM_SENDSTRING    (WM_USER + 1)
  121. #define MCIWNDM_GETPOSITION    (WM_USER + 2)
  122. #define MCIWNDM_GETSTART    (WM_USER + 3)
  123. #define MCIWNDM_GETLENGTH    (WM_USER + 4)
  124. #define MCIWNDM_GETEND        (WM_USER + 5)
  125. #define MCIWNDM_GETMODE        (WM_USER + 6)
  126. #define MCIWNDM_SETZOOM        (WM_USER + 8)
  127. #define MCIWNDM_SETVOLUME    (WM_USER + 10)
  128. #define MCIWNDM_GETVOLUME    (WM_USER + 11)
  129. #define MCIWNDM_SETSPEED    (WM_USER + 12)
  130. #define MCIWNDM_GETSPEED    (WM_USER + 13)
  131. #define MCIWNDM_SETREPEAT    (WM_USER + 14)
  132. #define MCIWNDM_GETREPEAT    (WM_USER + 15)
  133. #define MCIWNDM_NOTIFYSTATE    (WM_USER + 16)
  134. #define MCIWNDM_NOTIFYPOS    (WM_USER + 17)
  135. #define MCIWNDM_REALIZE         (WM_USER + 18)
  136. #define MCIWNDM_SETTIMEFORMAT   (WM_USER + 19)
  137. #define MCIWNDM_GETTIMEFORMAT   (WM_USER + 20)
  138. #define MCIWNDM_VALIDATEMEDIA   (WM_USER + 21)
  139. #define MCIWNDM_PLAYFROM    (WM_USER + 22)
  140. #define MCIWNDM_PLAYTO        (WM_USER + 23)
  141.  
  142. // special seek values for START and END
  143. #define MCIWND_START                -1
  144. #define MCIWND_END                  -2
  145. // special values for setting the time format
  146. #define MCIWND_TIMEFORMAT_MS        1
  147. #define MCIWND_TIMEFORMAT_FRAMES    2
  148. // error code for setting the format
  149. #define MCIWND_ERROR_INVALIDFORMAT    0xF000    // !!!
  150.  
  151. #ifndef MCI_PLAY
  152.     /* MCI command message identifiers */
  153.     #define MCI_OPEN                        0x0803
  154.     #define MCI_CLOSE                       0x0804
  155.     #define MCI_PLAY                        0x0806
  156.     #define MCI_SEEK                        0x0807
  157.     #define MCI_STOP                        0x0808
  158.     #define MCI_PAUSE                       0x0809
  159.     #define MCI_STEP                        0x080E
  160.     #define MCI_CUT                         0x0851
  161.     #define MCI_COPY                        0x0852
  162.     #define MCI_PASTE                       0x0853
  163.     #define MCI_RESUME                      0x0855
  164.     #define MCI_DELETE                      0x0856
  165. #endif
  166.  
  167. #ifndef MCI_MODE_NOT_READY
  168.     /* return values for 'status mode' command */
  169.     #define MCI_MODE_NOT_READY      (524)
  170.     #define MCI_MODE_STOP           (525)
  171.     #define MCI_MODE_PLAY           (526)
  172.     #define MCI_MODE_RECORD         (527)
  173.     #define MCI_MODE_SEEK           (528)
  174.     #define MCI_MODE_PAUSE          (529)
  175.     #define MCI_MODE_OPEN           (530)
  176. #endif
  177.