home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / vfw.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  45KB  |  1,131 lines

  1. #ifndef _VFW_H
  2. #define _VFW_H
  3. #if __GNUC__ >= 3
  4. #pragma GCC system_header
  5. #endif
  6.  
  7. #ifndef _WINDOWS_H
  8. #include <windows.h>
  9. #endif
  10. #ifndef _MMSYSTEM_H
  11. #include <mmsystem.h>
  12. #endif
  13. #if !defined  (_OLE2_H) && !defined (__OBJC__)
  14. #include <ole2.h>
  15. #endif
  16.  
  17. #define VFWAPI WINAPI
  18. #define VFWAPIV WINAPIV
  19.  
  20. #include <pshpack8.h>
  21.  
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25.  
  26. #define    ICERR_OK    0
  27. #define    ICERR_DONTDRAW    1
  28. #define    ICERR_NEWPALETTE    2
  29. #define    ICERR_GOTOKEYFRAME    3
  30. #define    ICERR_STOPDRAWING    4
  31. #define    ICERR_UNSUPPORTED    -1
  32. #define    ICERR_BADFORMAT    -2
  33. #define    ICERR_MEMORY    -3
  34. #define    ICERR_INTERNAL    -4
  35. #define    ICERR_BADFLAGS    -5
  36. #define    ICERR_BADPARAM    -6
  37. #define    ICERR_BADSIZE    -7
  38. #define    ICERR_BADHANDLE    -8
  39. #define    ICERR_CANTUPDATE    -9
  40. #define    ICERR_ABORT    -10
  41. #define    ICERR_ERROR    -100
  42. #define    ICERR_BADBITDEPTH    -200
  43. #define    ICERR_BADIMAGESIZE    -201
  44. #define    ICERR_CUSTOM    -400
  45. #define ICCOMPRESSFRAMES_PADDING    0x01
  46. #define    ICM_USER    (DRV_USER+0x0000)
  47. #define    ICM_RESERVED_LOW    (DRV_USER+0x1000)
  48. #define    ICM_RESERVED_HIGH    (DRV_USER+0x2000)
  49. #define    ICM_RESERVED    ICM_RESERVED_LOW
  50. #define    ICM_GETSTATE    (ICM_RESERVED+0)
  51. #define    ICM_SETSTATE    (ICM_RESERVED+1)
  52. #define    ICM_GETINFO    (ICM_RESERVED+2)
  53. #define    ICM_CONFIGURE    (ICM_RESERVED+10)
  54. #define    ICM_ABOUT    (ICM_RESERVED+11)
  55. #define    ICM_GETDEFAULTQUALITY    (ICM_RESERVED+30)
  56. #define    ICM_GETQUALITY    (ICM_RESERVED+31)
  57. #define    ICM_SETQUALITY    (ICM_RESERVED+32)
  58. #define    ICM_SET    (ICM_RESERVED+40)
  59. #define    ICM_GET    (ICM_RESERVED+41)
  60. #define ICM_FRAMERATE    mmioFOURCC('F','r','m','R')
  61. #define ICM_KEYFRAMERATE    mmioFOURCC('K','e','y','R')
  62. #define    ICM_COMPRESS_GET_FORMAT    (ICM_USER+4)
  63. #define    ICM_COMPRESS_GET_SIZE    (ICM_USER+5)
  64. #define    ICM_COMPRESS_QUERY    (ICM_USER+6)
  65. #define    ICM_COMPRESS_BEGIN    (ICM_USER+7)
  66. #define    ICM_COMPRESS    (ICM_USER+8)
  67. #define    ICM_COMPRESS_END    (ICM_USER+9)
  68. #define    ICM_DECOMPRESS_GET_FORMAT    (ICM_USER+10)
  69. #define    ICM_DECOMPRESS_QUERY    (ICM_USER+11)
  70. #define    ICM_DECOMPRESS_BEGIN    (ICM_USER+12)
  71. #define    ICM_DECOMPRESS    (ICM_USER+13)
  72. #define    ICM_DECOMPRESS_END    (ICM_USER+14)
  73. #define    ICM_DECOMPRESS_SET_PALETTE    (ICM_USER+29)
  74. #define    ICM_DECOMPRESS_GET_PALETTE    (ICM_USER+30)
  75. #define    ICM_DRAW_QUERY    (ICM_USER+31)
  76. #define    ICM_DRAW_BEGIN    (ICM_USER+15)
  77. #define    ICM_DRAW_GET_PALETTE    (ICM_USER+16)
  78. #define    ICM_DRAW_START    (ICM_USER+18)
  79. #define    ICM_DRAW_STOP    (ICM_USER+19)
  80. #define    ICM_DRAW_END    (ICM_USER+21)
  81. #define    ICM_DRAW_GETTIME    (ICM_USER+32)
  82. #define    ICM_DRAW    (ICM_USER+33)
  83. #define    ICM_DRAW_WINDOW    (ICM_USER+34)
  84. #define    ICM_DRAW_SETTIME    (ICM_USER+35)
  85. #define    ICM_DRAW_REALIZE    (ICM_USER+36)
  86. #define    ICM_DRAW_FLUSH    (ICM_USER+37)
  87. #define    ICM_DRAW_RENDERBUFFER    (ICM_USER+38)
  88. #define    ICM_DRAW_START_PLAY    (ICM_USER+39)
  89. #define    ICM_DRAW_STOP_PLAY    (ICM_USER+40)
  90. #define    ICM_DRAW_SUGGESTFORMAT    (ICM_USER+50)
  91. #define    ICM_DRAW_CHANGEPALETTE    (ICM_USER+51)
  92. #define    ICM_GETBUFFERSWANTED    (ICM_USER+41)
  93. #define    ICM_GETDEFAULTKEYFRAMERATE    (ICM_USER+42)
  94. #define    ICM_DECOMPRESSEX_BEGIN    (ICM_USER+60)
  95. #define    ICM_DECOMPRESSEX_QUERY    (ICM_USER+61)
  96. #define    ICM_DECOMPRESSEX    (ICM_USER+62)
  97. #define    ICM_DECOMPRESSEX_END    (ICM_USER+63)
  98. #define    ICM_COMPRESS_FRAMES_INFO    (ICM_USER+70)
  99. #define    ICM_SET_STATUS_PROC    (ICM_USER+72)
  100. #define ICMF_CONFIGURE_QUERY    0x01
  101. #define ICCOMPRESS_KEYFRAME    0x01
  102. #define ICSTATUS_START    0
  103. #define ICSTATUS_STATUS    1
  104. #define ICSTATUS_END    2
  105. #define ICSTATUS_ERROR    3
  106. #define ICSTATUS_YIELD    4
  107. #define    ICMODE_COMPRESS    1
  108. #define    ICMODE_DECOMPRESS    2
  109. #define    ICMODE_FASTDECOMPRESS    3
  110. #define    ICMODE_QUERY    4
  111. #define    ICMODE_FASTCOMPRESS    5
  112. #define    ICMODE_DRAW    8
  113. #define ICQUALITY_LOW    0
  114. #define ICQUALITY_HIGH    10000
  115. #define ICQUALITY_DEFAULT    -1
  116. #define    VIDCF_QUALITY    0x01
  117. #define    VIDCF_CRUNCH    0x02
  118. #define    VIDCF_TEMPORAL    0x04
  119. #define    VIDCF_COMPRESSFRAMES    0x08
  120. #define    VIDCF_DRAW    0x10
  121. #define    VIDCF_FASTTEMPORALC    0x20
  122. #define    VIDCF_FASTTEMPORALD    0x80
  123. #define    VIDCF_QUALITYTIME    0x40
  124. #define    VIDCF_FASTTEMPORAL    (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
  125. #define ICMF_ABOUT_QUERY    0x01
  126. #define ICDECOMPRESS_HURRYUP    0x80000000
  127. #define ICDECOMPRESS_UPDATE    0x40000000
  128. #define ICDECOMPRESS_PREROLL    0x20000000
  129. #define ICDECOMPRESS_NULLFRAME    0x10000000
  130. #define ICDECOMPRESS_NOTKEYFRAME    0x8000000
  131. #define ICDRAW_QUERY    0x01L
  132. #define ICDRAW_FULLSCREEN    0x02L
  133. #define ICDRAW_HDC    0x04L
  134. #define ICDRAW_ANIMATE    0x08L
  135. #define ICDRAW_CONTINUE    0x10L
  136. #define ICDRAW_MEMORYDC    0x20L
  137. #define ICDRAW_UPDATING    0x40L
  138. #define ICDRAW_RENDER    0x80L
  139. #define ICDRAW_BUFFER    0x100L
  140. #define ICINSTALL_UNICODE    0x8000
  141. #define ICINSTALL_FUNCTION    0x01
  142. #define ICINSTALL_DRIVER    0x02
  143. #define ICINSTALL_HDRV    0x04
  144. #define ICINSTALL_DRIVERW    0x8002
  145. #define ICDRAW_HURRYUP    0x80000000L
  146. #define ICDRAW_UPDATE    0x40000000L
  147. #define ICDRAW_PREROLL    0x20000000L
  148. #define ICDRAW_NULLFRAME    0x10000000L
  149. #define ICDRAW_NOTKEYFRAME    0x8000000L
  150. #define ICMF_COMPVARS_VALID    0x01
  151. #define ICMF_CHOOSE_KEYFRAME    0x01
  152. #define ICMF_CHOOSE_DATARATE    0x02
  153. #define ICMF_CHOOSE_PREVIEW    0x04
  154. #define ICMF_CHOOSE_ALLCOMPRESSORS    0x08
  155. #define ICTYPE_VIDEO    mmioFOURCC('v','i','d','c')
  156. #define ICTYPE_AUDIO    mmioFOURCC('a','u','d','c')
  157. #define formtypeAVI    mmioFOURCC('A','V','I',' ')
  158. #define listtypeAVIHEADER    mmioFOURCC('h','d','r','l')
  159. #define ckidAVIMAINHDR    mmioFOURCC('a','v','i','h')
  160. #define listtypeSTREAMHEADER    mmioFOURCC('s','t','r','l')
  161. #define ckidSTREAMHEADER    mmioFOURCC('s','t','r','h')
  162. #define ckidSTREAMFORMAT    mmioFOURCC('s','t','r','f')
  163. #define ckidSTREAMHANDLERDATA    mmioFOURCC('s','t','r','d')
  164. #define ckidSTREAMNAME    mmioFOURCC('s','t','r','n')
  165. #define listtypeAVIMOVIE    mmioFOURCC('m','o','v','i')
  166. #define listtypeAVIRECORD    mmioFOURCC('r','e','c',' ')
  167. #define ckidAVINEWINDEX    mmioFOURCC('i', 'd', 'x', '1')
  168. #define streamtypeANY    0UL
  169. #define streamtypeVIDEO    mmioFOURCC('v','i','d','s')
  170. #define streamtypeAUDIO    mmioFOURCC('a','u','d','s')
  171. #define streamtypeMIDI    mmioFOURCC('m','i','d','s')
  172. #define streamtypeTEXT    mmioFOURCC('t','x','t','s')
  173. #define cktypeDIBbits    aviTWOCC('d','b')
  174. #define cktypeDIBcompressed    aviTWOCC('d','c')
  175. #define cktypePALchange    aviTWOCC('p','c')
  176. #define cktypeWAVEbytes    aviTWOCC('w','b')
  177. #define ckidAVIPADDING    mmioFOURCC('J','U','N','K')
  178. #define FromHex(n) (((n)>='A')?((n)+10-'A'):((n)-'0'))
  179. #define StreamFromFOURCC(fcc) ((WORD)((FromHex(LOBYTE(LOWORD(fcc)))<<4)+(FromHex(HIBYTE(LOWORD(fcc))))))
  180. #define TWOCCFromFOURCC(fcc) HIWORD(fcc)
  181. #define ToHex(n) ((BYTE)(((n)>9)?((n)-10+'A'):((n)+'0')))
  182. #define MAKEAVICKID(tcc, stream) MAKELONG((ToHex((stream)&0x0f)<<8)|(ToHex(((stream)&0xf0)>>4)),tcc)
  183. #define AVIF_HASINDEX    0x10
  184. #define AVIF_MUSTUSEINDEX    0x20
  185. #define AVIF_ISINTERLEAVED    0x100
  186. #define AVIF_TRUSTCKTYPE    0x800
  187. #define AVIF_WASCAPTUREFILE    0x10000
  188. #define AVIF_COPYRIGHTED    0x20000
  189. #define AVI_HEADERSIZE    2048
  190. #define AVISF_DISABLED    0x01
  191. #define AVISF_VIDEO_PALCHANGES    0x10000
  192. #define AVIIF_LIST    0x01
  193. #define AVIIF_TWOCC    0x02
  194. #define AVIIF_KEYFRAME    0x10
  195. #define AVIIF_NOTIME    0x100
  196. #define AVIIF_COMPUSE    0xfff0000
  197. #define AVIIF_KEYFRAME    0x10
  198. #define    AVIGETFRAMEF_BESTDISPLAYFMT    1
  199. #define AVISTREAMINFO_DISABLED    0x01
  200. #define AVISTREAMINFO_FORMATCHANGES    0x10000
  201. #define AVIFILEINFO_HASINDEX    0x10
  202. #define AVIFILEINFO_MUSTUSEINDEX    0x20
  203. #define AVIFILEINFO_ISINTERLEAVED    0x100
  204. #define AVIFILEINFO_TRUSTCKTYPE    0x800
  205. #define AVIFILEINFO_WASCAPTUREFILE    0x10000
  206. #define AVIFILEINFO_COPYRIGHTED    0x20000
  207. #define AVIFILECAPS_CANREAD    0x01
  208. #define AVIFILECAPS_CANWRITE    0x02
  209. #define AVIFILECAPS_ALLKEYFRAMES    0x10
  210. #define AVIFILECAPS_NOCOMPRESSION    0x20
  211. #define AVICOMPRESSF_INTERLEAVE    0x01
  212. #define AVICOMPRESSF_DATARATE    0x02
  213. #define AVICOMPRESSF_KEYFRAMES    0x04
  214. #define AVICOMPRESSF_VALID    0x08
  215. #define FIND_DIR    0x0000000fL
  216. #define FIND_NEXT    0x00000001L
  217. #define FIND_PREV    0x00000004L
  218. #define FIND_FROM_START    0x00000008L
  219. #define FIND_TYPE    0x000000f0L
  220. #define FIND_KEY    0x00000010L
  221. #define FIND_ANY    0x00000020L
  222. #define FIND_FORMAT    0x00000040L
  223. #define FIND_RET    0x0000f000L
  224. #define FIND_POS    0x00000000L
  225. #define FIND_LENGTH    0x00001000L
  226. #define FIND_OFFSET    0x00002000L
  227. #define FIND_SIZE    0x00003000L
  228. #define FIND_INDEX    0x00004000L
  229. #define AVIERR_OK    0
  230. #define MAKE_AVIERR(e)    MAKE_SCODE(SEVERITY_ERROR,FACILITY_ITF,0x4000+e)
  231. #define AVIERR_UNSUPPORTED    MAKE_AVIERR(101)
  232. #define AVIERR_BADFORMAT    MAKE_AVIERR(102)
  233. #define AVIERR_MEMORY    MAKE_AVIERR(103)
  234. #define AVIERR_INTERNAL    MAKE_AVIERR(104)
  235. #define AVIERR_BADFLAGS    MAKE_AVIERR(105)
  236. #define AVIERR_BADPARAM    MAKE_AVIERR(106)
  237. #define AVIERR_BADSIZE    MAKE_AVIERR(107)
  238. #define AVIERR_BADHANDLE    MAKE_AVIERR(108)
  239. #define AVIERR_FILEREAD    MAKE_AVIERR(109)
  240. #define AVIERR_FILEWRITE    MAKE_AVIERR(110)
  241. #define AVIERR_FILEOPEN    MAKE_AVIERR(111)
  242. #define AVIERR_COMPRESSOR    MAKE_AVIERR(112)
  243. #define AVIERR_NOCOMPRESSOR    MAKE_AVIERR(113)
  244. #define AVIERR_READONLY    MAKE_AVIERR(114)
  245. #define AVIERR_NODATA    MAKE_AVIERR(115)
  246. #define AVIERR_BUFFERTOOSMALL    MAKE_AVIERR(116)
  247. #define AVIERR_CANTCOMPRESS    MAKE_AVIERR(117)
  248. #define AVIERR_USERABORT    MAKE_AVIERR(198)
  249. #define AVIERR_ERROR    MAKE_AVIERR(199)
  250. #define MCIWNDOPENF_NEW    0x0001
  251. #define MCIWNDF_NOAUTOSIZEWINDOW    0x0001
  252. #define MCIWNDF_NOPLAYBAR    0x0002
  253. #define MCIWNDF_NOAUTOSIZEMOVIE    0x0004
  254. #define MCIWNDF_NOMENU    0x0008
  255. #define MCIWNDF_SHOWNAME    0x0010
  256. #define MCIWNDF_SHOWPOS    0x0020
  257. #define MCIWNDF_SHOWMODE    0x0040
  258. #define MCIWNDF_SHOWALL    0x0070
  259. #define MCIWNDF_NOTIFYMODE    0x0100
  260. #define MCIWNDF_NOTIFYPOS    0x0200
  261. #define MCIWNDF_NOTIFYSIZE    0x0400
  262. #define MCIWNDF_NOTIFYERROR    0x1000
  263. #define MCIWNDF_NOTIFYALL    0x1F00
  264. #define MCIWNDF_NOTIFYANSI    0x0080
  265. #define MCIWNDF_NOTIFYMEDIAA    0x0880
  266. #define MCIWNDF_NOTIFYMEDIAW    0x0800
  267. #define MCIWNDF_RECORD    0x2000
  268. #define MCIWNDF_NOERRORDLG    0x4000
  269. #define MCIWNDF_NOOPEN    0x8000
  270. #define MCIWNDM_GETDEVICEID    (WM_USER + 100)
  271. #define MCIWNDM_GETSTART    (WM_USER + 103)
  272. #define MCIWNDM_GETLENGTH    (WM_USER + 104)
  273. #define MCIWNDM_GETEND    (WM_USER + 105)
  274. #define MCIWNDM_EJECT    (WM_USER + 107)
  275. #define MCIWNDM_SETZOOM    (WM_USER + 108)
  276. #define MCIWNDM_GETZOOM    (WM_USER + 109)
  277. #define MCIWNDM_SETVOLUME    (WM_USER + 110)
  278. #define MCIWNDM_GETVOLUME    (WM_USER + 111)
  279. #define MCIWNDM_SETSPEED    (WM_USER + 112)
  280. #define MCIWNDM_GETSPEED    (WM_USER + 113)
  281. #define MCIWNDM_SETREPEAT    (WM_USER + 114)
  282. #define MCIWNDM_GETREPEAT    (WM_USER + 115)
  283. #define MCIWNDM_REALIZE    (WM_USER + 118)
  284. #define MCIWNDM_VALIDATEMEDIA    (WM_USER + 121)
  285. #define MCIWNDM_PLAYFROM    (WM_USER + 122)
  286. #define MCIWNDM_PLAYTO    (WM_USER + 123)
  287. #define MCIWNDM_GETPALETTE    (WM_USER + 126)
  288. #define MCIWNDM_SETPALETTE    (WM_USER + 127)
  289. #define MCIWNDM_SETTIMERS    (WM_USER + 129)
  290. #define MCIWNDM_SETACTIVETIMER    (WM_USER + 130)
  291. #define MCIWNDM_SETINACTIVETIMER    (WM_USER + 131)
  292. #define MCIWNDM_GETACTIVETIMER    (WM_USER + 132)
  293. #define MCIWNDM_GETINACTIVETIMER    (WM_USER + 133)
  294. #define MCIWNDM_CHANGESTYLES    (WM_USER + 135)
  295. #define MCIWNDM_GETSTYLES    (WM_USER + 136)
  296. #define MCIWNDM_GETALIAS    (WM_USER + 137)
  297. #define MCIWNDM_PLAYREVERSE    (WM_USER + 139)
  298. #define MCIWNDM_GET_SOURCE    (WM_USER + 140)
  299. #define MCIWNDM_PUT_SOURCE    (WM_USER + 141)
  300. #define MCIWNDM_GET_DEST    (WM_USER + 142)
  301. #define MCIWNDM_PUT_DEST    (WM_USER + 143)
  302. #define MCIWNDM_CAN_PLAY    (WM_USER + 144)
  303. #define MCIWNDM_CAN_WINDOW    (WM_USER + 145)
  304. #define MCIWNDM_CAN_RECORD    (WM_USER + 146)
  305. #define MCIWNDM_CAN_SAVE    (WM_USER + 147)
  306. #define MCIWNDM_CAN_EJECT    (WM_USER + 148)
  307. #define MCIWNDM_CAN_CONFIG    (WM_USER + 149)
  308. #define MCIWNDM_PALETTEKICK    (WM_USER + 150)
  309. #define MCIWNDM_OPENINTERFACE    (WM_USER + 151)
  310. #define MCIWNDM_SETOWNER    (WM_USER + 152)
  311. #define MCIWNDM_SENDSTRINGA    (WM_USER + 101)
  312. #define MCIWNDM_GETPOSITIONA    (WM_USER + 102)
  313. #define MCIWNDM_GETMODEA    (WM_USER + 106)
  314. #define MCIWNDM_SETTIMEFORMATA    (WM_USER + 119)
  315. #define MCIWNDM_GETTIMEFORMATA    (WM_USER + 120)
  316. #define MCIWNDM_GETFILENAMEA    (WM_USER + 124)
  317. #define MCIWNDM_GETDEVICEA    (WM_USER + 125)
  318. #define MCIWNDM_GETERRORA    (WM_USER + 128)
  319. #define MCIWNDM_NEWA    (WM_USER + 134)
  320. #define MCIWNDM_RETURNSTRINGA    (WM_USER + 138)
  321. #define MCIWNDM_OPENA    (WM_USER + 153)
  322. #define MCIWNDM_SENDSTRINGW    (WM_USER + 201)
  323. #define MCIWNDM_GETPOSITIONW    (WM_USER + 202)
  324. #define MCIWNDM_GETMODEW    (WM_USER + 206)
  325. #define MCIWNDM_SETTIMEFORMATW    (WM_USER + 219)
  326. #define MCIWNDM_GETTIMEFORMATW    (WM_USER + 220)
  327. #define MCIWNDM_GETFILENAMEW    (WM_USER + 224)
  328. #define MCIWNDM_GETDEVICEW    (WM_USER + 225)
  329. #define MCIWNDM_GETERRORW    (WM_USER + 228)
  330. #define MCIWNDM_NEWW    (WM_USER + 234)
  331. #define MCIWNDM_RETURNSTRINGW    (WM_USER + 238)
  332. #define MCIWNDM_OPENW    (WM_USER + 252)
  333. #define MCIWNDM_NOTIFYMODE    (WM_USER + 200)
  334. #define MCIWNDM_NOTIFYPOS    (WM_USER + 201)
  335. #define MCIWNDM_NOTIFYSIZE    (WM_USER + 202)
  336. #define MCIWNDM_NOTIFYMEDIA    (WM_USER + 203)
  337. #define MCIWNDM_NOTIFYERROR    (WM_USER + 205)
  338. #define MCIWND_START    -1
  339. #define MCIWND_END    -2
  340. #define DDF_UPDATE    0x02
  341. #define DDF_SAME_HDC    0x04
  342. #define DDF_SAME_DRAW    0x08
  343. #define DDF_DONTDRAW    0x10
  344. #define DDF_ANIMATE    0x20
  345. #define DDF_BUFFER    0x40
  346. #define DDF_JUSTDRAWIT    0x80
  347. #define DDF_FULLSCREEN    0x100
  348. #define DDF_BACKGROUNDPAL    0x200
  349. #define DDF_NOTKEYFRAME    0x400
  350. #define DDF_HURRYUP    0x800
  351. #define DDF_HALFTONE    0x1000
  352. #define DDF_PREROLL    DDF_DONTDRAW
  353. #define DDF_SAME_DIB    DDF_SAME_DRAW
  354. #define DDF_SAME_SIZE    DDF_SAME_DRAW
  355. #define PD_CAN_DRAW_DIB    0x01
  356. #define PD_CAN_STRETCHDIB    0x02
  357. #define PD_STRETCHDIB_1_1_OK    0x04
  358. #define PD_STRETCHDIB_1_2_OK    0x08
  359. #define PD_STRETCHDIB_1_N_OK    0x10
  360. #ifndef mmioFOURCC
  361. #define mmioFOURCC(c0,c1,c2,c3) ((DWORD)(BYTE)(c0)|((DWORD)(BYTE)(c1)<<8)|((DWORD)(BYTE)(c2)<<16)|((DWORD)(BYTE)(c3)<<24))
  362. #endif
  363. #ifndef aviTWOCC
  364. #define aviTWOCC(ch0,ch1) ((WORD)(BYTE)(ch0)|((WORD)(BYTE)(ch1)<<8))
  365. #endif
  366.  
  367. #ifndef RC_INVOKED
  368. DECLARE_HANDLE(HIC);
  369. DECLARE_HANDLE(HDRAWDIB);
  370. typedef WORD TWOCC;
  371. typedef BOOL (CALLBACK *AVISAVECALLBACK)(INT);
  372. typedef struct {
  373.     DWORD dwSize;
  374.     DWORD fccType;
  375.     DWORD fccHandler;
  376.     DWORD dwVersion;
  377.     DWORD dwFlags;
  378.     LRESULT dwError;
  379.     LPVOID pV1Reserved;
  380.     LPVOID pV2Reserved;
  381.     DWORD dnDevNode;
  382. } ICOPEN,*LPICOPEN;
  383. typedef struct {
  384.     DWORD dwFlags;
  385.     LPBITMAPINFOHEADER lpbiOutput;
  386.     LPVOID lpOutput;
  387.     LPBITMAPINFOHEADER lpbiInput;
  388.     LPVOID lpInput;
  389.     LPDWORD lpckid;
  390.     LPDWORD lpdwFlags;
  391.     LONG lFrameNum;
  392.     DWORD dwFrameSize;
  393.     DWORD dwQuality;
  394.     LPBITMAPINFOHEADER lpbiPrev;
  395.     LPVOID lpPrev;
  396. } ICCOMPRESS;
  397. typedef struct {
  398.     DWORD dwFlags;
  399.     LPBITMAPINFOHEADER lpbiOutput;
  400.     LPARAM lOutput;
  401.     LPBITMAPINFOHEADER lpbiInput;
  402.     LPARAM lInput;
  403.     LONG lStartFrame;
  404.     LONG lFrameCount;
  405.     LONG lQuality;
  406.     LONG lDataRate;
  407.     LONG lKeyRate;
  408.     DWORD dwRate;
  409.     DWORD dwScale;
  410.     DWORD dwOverheadPerFrame;
  411.     DWORD dwReserved2;
  412.     LONG (CALLBACK *GetData)(LPARAM,LONG,LPVOID,LONG);
  413.     LONG (CALLBACK *PutData)(LPARAM,LONG,LPVOID,LONG);
  414. } ICCOMPRESSFRAMES;
  415. typedef struct {
  416.     DWORD dwFlags;
  417.     LPARAM lParam;
  418.     LONG (CALLBACK *Status)(LPARAM,UINT,LONG);
  419. } ICSETSTATUSPROC;
  420. typedef struct {
  421.     DWORD dwSize;
  422.     DWORD fccType;
  423.     DWORD fccHandler;
  424.     DWORD dwFlags;
  425.     DWORD dwVersion;
  426.     DWORD dwVersionICM;
  427.     WCHAR szName[16];
  428.     WCHAR szDescription[128];
  429.     WCHAR szDriver[128];
  430. } ICINFO;
  431. typedef struct {
  432.     DWORD dwFlags;
  433.     LPBITMAPINFOHEADER lpbiInput;
  434.     LPVOID lpInput;
  435.     LPBITMAPINFOHEADER lpbiOutput;
  436.     LPVOID lpOutput;
  437.     DWORD ckid;
  438. } ICDECOMPRESS;
  439. typedef struct {
  440.     DWORD dwFlags;
  441.     LPBITMAPINFOHEADER lpbiSrc;
  442.     LPVOID lpSrc;
  443.     LPBITMAPINFOHEADER lpbiDst;
  444.     LPVOID lpDst;
  445.     INT xDst;
  446.     INT yDst;
  447.     INT dxDst;
  448.     INT dyDst;
  449.     INT xSrc;
  450.     INT ySrc;
  451.     INT dxSrc;
  452.     INT dySrc;
  453. } ICDECOMPRESSEX;
  454. typedef struct {
  455.     DWORD dwFlags;
  456.     LPBITMAPINFOHEADER lpbiIn;
  457.     LPBITMAPINFOHEADER lpbiSuggest;
  458.     INT dxSrc;
  459.     INT dySrc;
  460.     INT dxDst;
  461.     INT dyDst;
  462.     HIC hicDecompressor;
  463. } ICDRAWSUGGEST;
  464. typedef struct {
  465.     DWORD dwFlags;
  466.     INT iStart;
  467.     INT iLen;
  468.     LPPALETTEENTRY lppe;
  469. } ICPALETTE;
  470. typedef struct {
  471.     DWORD dwFlags;
  472.     HPALETTE hpal;
  473.     HWND hwnd;
  474.     HDC hdc;
  475.     INT xDst;
  476.     INT yDst;
  477.     INT dxDst;
  478.     INT dyDst;
  479.     LPBITMAPINFOHEADER lpbi;
  480.     INT xSrc;
  481.     INT ySrc;
  482.     INT dxSrc;
  483.     INT dySrc;
  484.     DWORD dwRate;
  485.     DWORD dwScale;
  486. } ICDRAWBEGIN;
  487. typedef struct {
  488.     DWORD dwFlags;
  489.     LPVOID lpFormat;
  490.     LPVOID lpData;
  491.     DWORD cbData;
  492.     LONG lTime;
  493. } ICDRAW;
  494. typedef struct {
  495.     LONG cbSize;
  496.     DWORD dwFlags;
  497.     HIC hic;
  498.     DWORD fccType;
  499.     DWORD fccHandler;
  500.     LPBITMAPINFO lpbiIn;
  501.     LPBITMAPINFO lpbiOut;
  502.     LPVOID lpBitsOut;
  503.     LPVOID lpBitsPrev;
  504.     LONG lFrame;
  505.     LONG lKey;
  506.     LONG lDataRate;
  507.     LONG lQ;
  508.     LONG lKeyCount;
  509.     LPVOID lpState;
  510.     LONG cbState;
  511. } COMPVARS, *PCOMPVARS;
  512. typedef struct _MainAVIHeader
  513. {
  514.     DWORD dwMicroSecPerFrame;
  515.     DWORD dwMaxBytesPerSec;
  516.     DWORD dwPaddingGranularity;
  517.     DWORD dwFlags;
  518.     DWORD dwTotalFrames;
  519.     DWORD dwInitialFrames;
  520.     DWORD dwStreams;
  521.     DWORD dwSuggestedBufferSize;
  522.     DWORD dwWidth;
  523.     DWORD dwHeight;
  524.     DWORD dwReserved[4];
  525. } MainAVIHeader;
  526. typedef struct {
  527.     FOURCC fccType;
  528.     FOURCC fccHandler;
  529.     DWORD dwFlags;
  530.     WORD wPriority;
  531.     WORD wLanguage;
  532.     DWORD dwInitialFrames;
  533.     DWORD dwScale;
  534.     DWORD dwRate;
  535.     DWORD dwStart;
  536.     DWORD dwLength;
  537.     DWORD dwSuggestedBufferSize;
  538.     DWORD dwQuality;
  539.     DWORD dwSampleSize;
  540.     RECT rcFrame;
  541. } AVIStreamHeader;
  542. typedef struct _AVIINDEXENTRY {
  543.     DWORD ckid;
  544.     DWORD dwFlags;
  545.     DWORD dwChunkOffset;
  546.     DWORD dwChunkLength;
  547. } AVIINDEXENTRY;
  548. typedef struct _AVIPALCHANGE {
  549.     BYTE bFirstEntry;
  550.     BYTE bNumEntries;
  551.     WORD wFlags;
  552.     PALETTEENTRY peNew[1];
  553. } AVIPALCHANGE;
  554. typedef struct _AVISTREAMINFOA {
  555.     DWORD fccType;
  556.     DWORD fccHandler;
  557.     DWORD dwFlags;
  558.     DWORD dwCaps;
  559.     WORD wPriority;
  560.     WORD wLanguage;
  561.     DWORD dwScale;
  562.     DWORD dwRate;
  563.     DWORD dwStart;
  564.     DWORD dwLength;
  565.     DWORD dwInitialFrames;
  566.     DWORD dwSuggestedBufferSize;
  567.     DWORD dwQuality;
  568.     DWORD dwSampleSize;
  569.     RECT rcFrame;
  570.     DWORD dwEditCount;
  571.     DWORD dwFormatChangeCount;
  572.     CHAR szName[64];
  573. } AVISTREAMINFOA, * LPAVISTREAMINFOA, *PAVISTREAMINFOA;
  574. typedef struct _AVISTREAMINFOW {
  575.     DWORD fccType;
  576.     DWORD fccHandler;
  577.     DWORD dwFlags;
  578.     DWORD dwCaps;
  579.     WORD wPriority;
  580.     WORD wLanguage;
  581.     DWORD dwScale;
  582.     DWORD dwRate;
  583.     DWORD dwStart;
  584.     DWORD dwLength;
  585.     DWORD dwInitialFrames;
  586.     DWORD dwSuggestedBufferSize;
  587.     DWORD dwQuality;
  588.     DWORD dwSampleSize;
  589.     RECT rcFrame;
  590.     DWORD dwEditCount;
  591.     DWORD dwFormatChangeCount;
  592.     WCHAR szName[64];
  593. } AVISTREAMINFOW, * LPAVISTREAMINFOW, *PAVISTREAMINFOW;
  594. typedef struct _AVIFILEINFOW {
  595.     DWORD dwMaxBytesPerSec;
  596.     DWORD dwFlags;
  597.     DWORD dwCaps;
  598.     DWORD dwStreams;
  599.     DWORD dwSuggestedBufferSize;
  600.     DWORD dwWidth;
  601.     DWORD dwHeight;
  602.     DWORD dwScale;
  603.     DWORD dwRate;
  604.     DWORD dwLength;
  605.     DWORD dwEditCount;
  606.     WCHAR szFileType[64];
  607. } AVIFILEINFOW, *LPAVIFILEINFOW, *PAVIFILEINFOW;
  608. typedef struct _AVIFILEINFOA {
  609.     DWORD dwMaxBytesPerSec;
  610.     DWORD dwFlags;
  611.     DWORD dwCaps;
  612.     DWORD dwStreams;
  613.     DWORD dwSuggestedBufferSize;
  614.     DWORD dwWidth;
  615.     DWORD dwHeight;
  616.     DWORD dwScale;
  617.     DWORD dwRate;
  618.     DWORD dwLength;
  619.     DWORD dwEditCount;
  620.     CHAR szFileType[64];
  621. } AVIFILEINFOA, *LPAVIFILEINFOA, *PAVIFILEINFOA;
  622. typedef struct _AVICOMPRESSOPTIONS {
  623.     DWORD fccType;
  624.     DWORD fccHandler;
  625.     DWORD dwKeyFrameEvery;
  626.     DWORD dwQuality;
  627.     DWORD dwBytesPerSecond;
  628.     DWORD dwFlags;
  629.     LPVOID lpFormat;
  630.     DWORD cbFormat;
  631.     LPVOID lpParms;
  632.     DWORD cbParms;
  633.     DWORD dwInterleaveEvery;
  634. } AVICOMPRESSOPTIONS, *LPAVICOMPRESSOPTIONS,*PAVICOMPRESSOPTIONS;
  635.  
  636. #if !defined (__OBJC__)
  637. #define DEFINE_AVIGUID(name,l,w1,w2) DEFINE_GUID(name,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
  638. DEFINE_AVIGUID(IID_IAVIFile,0x00020020,0,0);
  639. DEFINE_AVIGUID(IID_IAVIStream,0x00020021,0,0);
  640. DEFINE_AVIGUID(IID_IAVIStreaming,0x00020022,0,0);
  641. DEFINE_AVIGUID(IID_IGetFrame,0x00020023,0,0);
  642. DEFINE_AVIGUID(IID_IAVIEditStream,0x00020024,0,0);
  643. DEFINE_AVIGUID(CLSID_AVIFile,0x00020000,0,0);
  644.  
  645. #undef INTERFACE
  646. #define INTERFACE IAVIStream
  647. DECLARE_INTERFACE_(IAVIStream, IUnknown)
  648. {
  649.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  650.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  651.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  652.     STDMETHOD(Create)(THIS_ LPARAM,LPARAM) PURE;
  653.     STDMETHOD(Info)(THIS_ AVISTREAMINFOW*,LONG) PURE;
  654.     STDMETHOD_(LONG,FindSample)(THIS_ LONG,LONG) PURE;
  655.     STDMETHOD(ReadFormat)(THIS_ LONG,LPVOID,LONG*) PURE;
  656.     STDMETHOD(SetFormat)(THIS_ LONG,LPVOID,LONG) PURE;
  657.     STDMETHOD(Read)(THIS_ LONG,LONG,LPVOID,LONG,LONG*,LONG*) PURE;
  658.     STDMETHOD(Write)(THIS_ LONG,LONG,LPVOID,LONG,DWORD,LONG*,LONG*) PURE;
  659.     STDMETHOD(Delete)(THIS_ LONG,LONG) PURE;
  660.     STDMETHOD(ReadData)(THIS_ DWORD,LPVOID,LONG*) PURE;
  661.     STDMETHOD(WriteData)(THIS_ DWORD,LPVOID,LONG) PURE;
  662.     STDMETHOD(SetInfo)(THIS_ AVISTREAMINFOW*,LONG) PURE;
  663. };
  664. typedef IAVIStream *PAVISTREAM;
  665.  
  666. #undef INTERFACE
  667. #define INTERFACE IAVIStreaming
  668. DECLARE_INTERFACE_(IAVIStreaming, IUnknown)
  669. {
  670.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  671.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  672.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  673.     STDMETHOD(Begin)(THIS_ LONG,LONG,LONG) PURE;     
  674.     STDMETHOD(End)(THIS) PURE;
  675. };
  676. typedef IAVIStreaming *PAVISTREAMING;
  677.  
  678. #undef INTERFACE
  679. #define INTERFACE IAVIEditStream
  680. DECLARE_INTERFACE_(IAVIEditStream, IUnknown)
  681. {
  682.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  683.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  684.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  685.     STDMETHOD(Cut)(THIS_ LONG*,LONG*,PAVISTREAM*) PURE;
  686.     STDMETHOD(Copy)(THIS_ LONG*,LONG*,PAVISTREAM*) PURE;
  687.     STDMETHOD(Paste)(THIS_ LONG*,LONG*,PAVISTREAM,LONG,LONG) PURE;
  688.     STDMETHOD(Clone)(THIS_ PAVISTREAM*) PURE;
  689.     STDMETHOD(SetInfo)(THIS_ LPAVISTREAMINFOW,LONG) PURE;
  690. };
  691. typedef IAVIEditStream *PAVIEDITSTREAM;
  692.  
  693. #undef INTERFACE
  694. #define INTERFACE IAVIFile
  695. DECLARE_INTERFACE_(IAVIFile, IUnknown)
  696. {
  697.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  698.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  699.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  700.     STDMETHOD(Info)(THIS_ AVIFILEINFOW*,LONG) PURE;
  701.     STDMETHOD(GetStream)(THIS_ PAVISTREAM*,DWORD,LONG) PURE;
  702.     STDMETHOD(CreateStream)(THIS_ PAVISTREAM*,AVISTREAMINFOW*) PURE;
  703.     STDMETHOD(WriteData)(THIS_ DWORD,LPVOID,LONG) PURE;
  704.     STDMETHOD(ReadData)(THIS_ DWORD,LPVOID,LONG*) PURE;
  705.     STDMETHOD(EndRecord)(THIS) PURE;
  706.     STDMETHOD(DeleteStream)(THIS_ DWORD,LONG) PURE;
  707. };
  708. typedef IAVIFile *PAVIFILE;
  709.  
  710. #undef INTERFACE
  711. #define INTERFACE IGetFrame
  712. DECLARE_INTERFACE_(IGetFrame, IUnknown)
  713. {
  714.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  715.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  716.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  717.     STDMETHOD_(LPVOID,GetFrame)(THIS_ LONG) PURE;
  718.     STDMETHOD(Begin)(THIS_ LONG,LONG,LONG) PURE;
  719.     STDMETHOD(End)(THIS) PURE;
  720.     STDMETHOD(SetFormat)(THIS_ LPBITMAPINFOHEADER,LPVOID,INT,INT,INT,INT) PURE;
  721. };
  722. typedef IGetFrame *PGETFRAME;
  723. #endif /* !defined (__OBJC__) */
  724.  
  725. DWORD VFWAPI VideoForWindowsVersion(VOID);
  726. LONG VFWAPI InitVFW(VOID);
  727. LONG VFWAPI TermVFW(VOID);
  728. DWORD VFWAPIV ICCompress(HIC,DWORD,LPBITMAPINFOHEADER,LPVOID,LPBITMAPINFOHEADER,LPVOID,LPDWORD,LPDWORD,LONG,DWORD,DWORD,LPBITMAPINFOHEADER,LPVOID);
  729. DWORD VFWAPIV ICDecompress(HIC,DWORD,LPBITMAPINFOHEADER,LPVOID,LPBITMAPINFOHEADER,LPVOID);
  730. LRESULT    VFWAPI ICSendMessage(HIC,UINT,DWORD,DWORD);
  731. HANDLE VFWAPI ICImageCompress(HIC,UINT,LPBITMAPINFO,LPVOID,LPBITMAPINFO,LONG,LONG*);
  732. HANDLE VFWAPI ICImageDecompress(HIC,UINT,LPBITMAPINFO,LPVOID,LPBITMAPINFO);
  733. BOOL VFWAPI ICInfo(DWORD,DWORD,ICINFO*);
  734. BOOL VFWAPI ICInstall(DWORD,DWORD,LPARAM,LPSTR,UINT);
  735. BOOL VFWAPI ICRemove(DWORD,DWORD,UINT);
  736. LRESULT VFWAPI ICGetInfo(HIC,ICINFO*,DWORD);
  737. HIC VFWAPI ICOpen(DWORD,DWORD,UINT);
  738. HIC VFWAPI ICOpenFunction(DWORD,DWORD,UINT,FARPROC);
  739. LRESULT VFWAPI ICClose(HIC hic);
  740. HIC VFWAPI ICLocate(DWORD,DWORD,LPBITMAPINFOHEADER,LPBITMAPINFOHEADER,WORD);
  741. HIC VFWAPI ICGetDisplayFormat(HIC,LPBITMAPINFOHEADER,LPBITMAPINFOHEADER,INT,INT,INT);
  742. DWORD VFWAPIV ICDrawBegin(HIC,DWORD,HPALETTE,HWND,HDC,INT,INT,INT,INT,LPBITMAPINFOHEADER,INT,INT,INT,INT,DWORD,DWORD);
  743. DWORD VFWAPIV ICDraw(HIC,DWORD,LPVOID,LPVOID,DWORD,LONG);
  744. BOOL VFWAPI ICCompressorChoose(HWND,UINT,LPVOID,LPVOID,PCOMPVARS,LPSTR);
  745. BOOL VFWAPI ICSeqCompressFrameStart(PCOMPVARS,LPBITMAPINFO);
  746. void VFWAPI ICSeqCompressFrameEnd(PCOMPVARS);
  747. LPVOID VFWAPI ICSeqCompressFrame(PCOMPVARS,UINT,LPVOID,BOOL*,LONG*);
  748. void VFWAPI ICCompressorFree(PCOMPVARS);
  749. #if !defined (__OBJC__)
  750. ULONG WINAPI AVIStreamAddRef(PAVISTREAM);
  751. ULONG WINAPI AVIStreamRelease(PAVISTREAM);
  752. HRESULT WINAPI AVIStreamCreate(PAVISTREAM*,LONG,LONG,CLSID*);
  753. HRESULT WINAPI AVIStreamInfoA(PAVISTREAM,AVISTREAMINFOA*,LONG);
  754. HRESULT WINAPI AVIStreamInfoW(PAVISTREAM,AVISTREAMINFOW*,LONG);
  755. HRESULT WINAPI AVIStreamFindSample(PAVISTREAM,LONG,DWORD);
  756. HRESULT WINAPI AVIStreamReadFormat(PAVISTREAM,LONG,LPVOID,LONG*);
  757. HRESULT WINAPI AVIStreamSetFormat(PAVISTREAM,LONG,LPVOID,LONG);
  758. HRESULT WINAPI AVIStreamRead(PAVISTREAM,LONG,LONG,LPVOID,LONG,LONG*,LONG*);
  759. HRESULT WINAPI AVIStreamWrite(PAVISTREAM,LONG,LONG,LPVOID,LONG,DWORD,LONG*,LONG*);
  760. HRESULT WINAPI AVIStreamReadData(PAVISTREAM,DWORD,LPVOID,LONG*);
  761. HRESULT WINAPI AVIStreamWriteData(PAVISTREAM,DWORD,LPVOID,LONG);
  762. PGETFRAME WINAPI AVIStreamGetFrameOpen(PAVISTREAM,LPBITMAPINFOHEADER);
  763. LPVOID WINAPI AVIStreamGetFrame(PGETFRAME,LONG);
  764. HRESULT WINAPI AVIStreamGetFrameClose(PGETFRAME);
  765. HRESULT WINAPI AVIMakeCompressedStream(PAVISTREAM*,PAVISTREAM,AVICOMPRESSOPTIONS*,CLSID*);
  766. HRESULT WINAPI AVIMakeFileFromStreams(PAVIFILE*,INT,PAVISTREAM*);
  767. HRESULT WINAPI AVIStreamOpenFromFileA(PAVISTREAM*,LPCSTR,DWORD,LONG,UINT,CLSID*);
  768. HRESULT WINAPI AVIStreamOpenFromFileW(PAVISTREAM*,LPCWSTR,DWORD,LONG,UINT,CLSID*);
  769. HRESULT WINAPI AVIBuildFilterA(LPSTR,LONG,BOOL);
  770. HRESULT WINAPI AVIBuildFilterW(LPWSTR,LONG,BOOL);
  771. BOOL WINAPI AVISaveOptions(HWND,UINT,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*);
  772. HRESULT WINAPI AVISaveOptionsFree(INT,LPAVICOMPRESSOPTIONS*);
  773. HRESULT WINAPI AVISaveVA(LPCSTR,CLSID*,AVISAVECALLBACK,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*);
  774. HRESULT WINAPI AVISaveVW(LPCWSTR,CLSID*,AVISAVECALLBACK,INT,PAVISTREAM*,LPAVICOMPRESSOPTIONS*);
  775. LONG WINAPI AVIStreamStart(PAVISTREAM);
  776. LONG WINAPI AVIStreamLength(PAVISTREAM);
  777. LONG WINAPI AVIStreamSampleToTime(PAVISTREAM,LONG);
  778. LONG WINAPI AVIStreamTimeToSample(PAVISTREAM,LONG);
  779. HRESULT WINAPI CreateEditableStream(PAVISTREAM*,PAVISTREAM);
  780. HRESULT WINAPI EditStreamClone(PAVISTREAM,PAVISTREAM*);
  781. HRESULT WINAPI EditStreamCopy(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
  782. HRESULT WINAPI EditStreamCut(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
  783. HRESULT WINAPI EditStreamPaste(PAVISTREAM,LONG*,LONG*,PAVISTREAM,LONG,LONG);
  784. HRESULT WINAPI EditStreamSetInfoA(PAVISTREAM,LPAVISTREAMINFOA,LONG);
  785. HRESULT WINAPI EditStreamSetInfoW(PAVISTREAM,LPAVISTREAMINFOW,LONG);
  786. HRESULT WINAPI EditStreamSetNameA(PAVISTREAM,LPCSTR);
  787. HRESULT WINAPI EditStreamSetNameW(PAVISTREAM,LPCWSTR);
  788. HRESULT WINAPI CreateEditableStream(PAVISTREAM*,PAVISTREAM);
  789. HRESULT WINAPI EditStreamClone(PAVISTREAM,PAVISTREAM*);
  790. HRESULT WINAPI EditStreamCopy(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
  791. HRESULT WINAPI EditStreamCut(PAVISTREAM,LONG*,LONG*,PAVISTREAM*);
  792. HRESULT WINAPI EditStreamPaste(PAVISTREAM,LONG*,LONG*,PAVISTREAM,LONG,LONG);
  793. HRESULT WINAPI EditStreamSetInfoA(PAVISTREAM,LPAVISTREAMINFOA,LONG);
  794. HRESULT WINAPI EditStreamSetInfoW(PAVISTREAM,LPAVISTREAMINFOW,LONG);
  795. HRESULT WINAPI EditStreamSetNameA(PAVISTREAM,LPCSTR);
  796. HRESULT WINAPI EditStreamSetNameW(PAVISTREAM,LPCWSTR);
  797. VOID WINAPI AVIFileInit(void);
  798. VOID WINAPI AVIFileExit(void);
  799. HRESULT WINAPI AVIFileOpenA(PAVIFILE*,LPCSTR,UINT,LPCLSID);
  800. HRESULT WINAPI AVIFileOpenW(PAVIFILE*,LPCWSTR,UINT,LPCLSID);
  801. ULONG WINAPI AVIFileAddRef(PAVIFILE);
  802. ULONG WINAPI AVIFileRelease(PAVIFILE);
  803. HRESULT WINAPI AVIFileInfoA(PAVIFILE,PAVIFILEINFOA,LONG);
  804. HRESULT WINAPI AVIFileInfoW(PAVIFILE,PAVIFILEINFOW,LONG);
  805. HRESULT WINAPI AVIFileGetStream(PAVIFILE,PAVISTREAM*,DWORD,LONG);
  806. HRESULT WINAPI AVIFileCreateStreamA(PAVIFILE,PAVISTREAM*,AVISTREAMINFOA*);
  807. HRESULT WINAPI AVIFileCreateStreamW(PAVIFILE,PAVISTREAM*,AVISTREAMINFOW*);
  808. HRESULT WINAPI AVIFileWriteData(PAVIFILE,DWORD,LPVOID,LONG);
  809. HRESULT WINAPI AVIFileReadData(PAVIFILE,DWORD,LPVOID,LPLONG);
  810. HRESULT WINAPI AVIFileEndRecord(PAVIFILE);
  811. HRESULT WINAPI AVIClearClipboard(VOID);
  812. HRESULT WINAPI AVIGetFromClipboard(PAVIFILE*);
  813. HRESULT WINAPI AVIPutFileOnClipboard(PAVIFILE);
  814. #endif /* __OBJC__ */
  815. #ifdef OFN_READONLY
  816. BOOL WINAPI GetOpenFileNamePreviewA(LPOPENFILENAMEA);
  817. BOOL WINAPI GetOpenFileNamePreviewW(LPOPENFILENAMEW);
  818. BOOL WINAPI GetSaveFileNamePreviewA(LPOPENFILENAMEA);
  819. BOOL WINAPI GetSaveFileNamePreviewW(LPOPENFILENAMEW);
  820. #endif
  821. HWND VFWAPIV MCIWndCreateA(HWND,HINSTANCE,DWORD,LPCSTR);
  822. HWND VFWAPIV MCIWndCreateW(HWND,HINSTANCE,DWORD,LPCWSTR);
  823. HDRAWDIB VFWAPI DrawDibOpen(VOID);
  824. UINT VFWAPI DrawDibRealize(HDRAWDIB,HDC,BOOL);
  825. BOOL VFWAPI DrawDibBegin(HDRAWDIB,HDC,INT,INT,LPBITMAPINFOHEADER,INT,INT,UINT);
  826. BOOL VFWAPI DrawDibDraw(HDRAWDIB,HDC,INT,INT,INT,INT,LPBITMAPINFOHEADER,LPVOID,INT,INT,INT,INT,UINT);
  827. BOOL VFWAPI DrawDibSetPalette(HDRAWDIB,HPALETTE);
  828. HPALETTE VFWAPI DrawDibGetPalette(HDRAWDIB);
  829. BOOL VFWAPI DrawDibChangePalette(HDRAWDIB,int,int,LPPALETTEENTRY);
  830. LPVOID VFWAPI DrawDibGetBuffer(HDRAWDIB,LPBITMAPINFOHEADER,DWORD,DWORD);
  831. BOOL VFWAPI DrawDibStart(HDRAWDIB,DWORD);
  832. BOOL VFWAPI DrawDibStop(HDRAWDIB);
  833. BOOL VFWAPI DrawDibEnd(HDRAWDIB);
  834. BOOL VFWAPI DrawDibClose(HDRAWDIB);
  835. DWORD VFWAPI DrawDibProfileDisplay(LPBITMAPINFOHEADER);
  836.  
  837. #define ICCompressGetFormat(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_FORMAT,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
  838. #define ICCompressGetFormatSize(hic,lpbi) ICCompressGetFormat(hic,lpbi,NULL)
  839. #define ICCompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_BEGIN,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
  840. #define ICCompressGetSize(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_GET_SIZE,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
  841. #define ICCompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_COMPRESS_QUERY,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
  842. #define ICCompressEnd(hic) ICSendMessage(hic,ICM_COMPRESS_END,0,0)
  843. #define ICQueryAbout(hic) (ICSendMessage(hic,ICM_ABOUT,(DWORD)-1,ICMF_ABOUT_QUERY)==ICERR_OK)
  844. #define ICAbout(hic,hwnd) ICSendMessage(hic,ICM_ABOUT,(DWORD)(hwnd),0)
  845. #define ICQueryConfigure(hic) (ICSendMessage(hic,ICM_CONFIGURE,(DWORD)-1,ICMF_CONFIGURE_QUERY)==ICERR_OK)
  846. #define ICConfigure(hic,hwnd) ICSendMessage(hic,ICM_CONFIGURE,(DWORD)(hwnd),0)
  847. #define ICDecompressBegin(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_BEGIN,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
  848. #define ICDecompressQuery(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_QUERY,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
  849. #define ICDecompressGetFormat(hic,lpbiInput,lpbiOutput) (LONG)ICSendMessage(hic,ICM_DECOMPRESS_GET_FORMAT,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
  850. #define ICDecompressGetFormatSize(hic,lpbi) ICDecompressGetFormat(hic, lpbi, NULL)
  851. #define ICDecompressGetPalette(hic,lpbiInput,lpbiOutput) ICSendMessage(hic,ICM_DECOMPRESS_GET_PALETTE,(DWORD)(lpbiInput),(DWORD)(lpbiOutput))
  852. #define ICDecompressSetPalette(hic,lpbiPalette) ICSendMessage(hic,ICM_DECOMPRESS_SET_PALETTE,(DWORD)(lpbiPalette),0)
  853. #define ICDecompressEnd(hic) ICSendMessage(hic,ICM_DECOMPRESS_END,0,0)
  854. #define ICDecompressExEnd(hic) ICSendMessage(hic,ICM_DECOMPRESSEX_END,0,0)
  855. #define ICDecompressOpen(fccType,fccHandler,lpbiIn,lpbiOut) ICLocate(fccType,fccHandler,lpbiIn,lpbiOut,ICMODE_DECOMPRESS)
  856. #define ICDrawOpen(fccType,fccHandler,lpbiIn) ICLocate(fccType,fccHandler,lpbiIn,NULL,ICMODE_DRAW)
  857. #define ICGetState(hic,pv,cb) ICSendMessage(hic,ICM_GETSTATE,(DWORD)(pv),(DWORD)(cb))
  858. #define ICSetState(hic,pv,cb) ICSendMessage(hic,ICM_SETSTATE,(DWORD)(pv),(DWORD)(cb))
  859. #define ICGetStateSize(hic) ICGetState(hic,NULL,0)
  860. #define ICDrawWindow(hic,prc) ICSendMessage(hic,ICM_DRAW_WINDOW,(DWORD)(prc),sizeof(RECT))
  861. #define ICDrawQuery(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_QUERY,(DWORD)(lpbiInput),0)
  862. #define ICDrawChangePalette(hic,lpbiInput) ICSendMessage(hic,ICM_DRAW_CHANGEPALETTE,(DWORD)(lpbiInput),0)
  863. #define ICGetBuffersWanted(hic,lpdwBuffers) ICSendMessage(hic,ICM_GETBUFFERSWANTED,(DWORD)(lpdwBuffers),0)
  864. #define ICDrawEnd(hic) ICSendMessage(hic,ICM_DRAW_END,0,0)
  865. #define ICDrawStart(hic) ICSendMessage(hic,ICM_DRAW_START,0,0)
  866. #define ICDrawStartPlay(hic,lFrom,lTo) ICSendMessage(hic,ICM_DRAW_START_PLAY,(DWORD)(lFrom),(DWORD)(lTo))
  867. #define ICDrawStop(hic) ICSendMessage(hic,ICM_DRAW_STOP,0,0)
  868. #define ICDrawStopPlay(hic) ICSendMessage(hic,ICM_DRAW_STOP_PLAY,0,0)
  869. #define ICDrawGetTime(hic,lplTime) ICSendMessage(hic,ICM_DRAW_GETTIME,(DWORD)(lplTime),0)
  870. #define ICDrawSetTime(hic,lTime) ICSendMessage(hic,ICM_DRAW_SETTIME,(DWORD)lTime,0)
  871. #define ICDrawRealize(hic,hdc,fBackground) ICSendMessage(hic,ICM_DRAW_REALIZE,(DWORD)(hdc),(DWORD)(fBackground))
  872. #define ICDrawFlush(hic) ICSendMessage(hic,ICM_DRAW_FLUSH,0,0)
  873. #define ICDrawRenderBuffer(hic) ICSendMessage(hic,ICM_DRAW_RENDERBUFFER,0,0)
  874. #define AVIFileClose(pavi) AVIFileRelease(pavi)
  875. #define AVIStreamClose(pavi) AVIStreamRelease(pavi);
  876. #define AVIStreamEnd(pavi) (AVIStreamStart(pavi)+AVIStreamLength(pavi))
  877. #define AVIStreamEndTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamEnd(pavi))
  878. #define AVIStreamFormatSize(pavi,lPos,plSize) AVIStreamReadFormat(pavi,lPos,NULL,plSize)
  879. #define AVIStreamLengthTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamLength(pavi))
  880. #define AVIStreamSampleSize(pavi,pos,psize) AVIStreamRead(pavi,pos,1,NULL,0,psize,NULL)
  881. #define AVIStreamSampleToSample(pavi1,pavi2,samp2) AVIStreamTimeToSample(pavi1,AVIStreamSampleToTime(pavi2,samp2))
  882. #define AVIStreamStartTime(pavi) AVIStreamSampleToTime(pavi,AVIStreamStart(pavi))
  883. #define AVIStreamNextSample(pavi,pos) AVIStreamFindSample(pavi,pos+1,FIND_NEXT|FIND_ANY)
  884. #define AVIStreamPrevSample(pavi,pos) AVIStreamFindSample(pavi,pos-1,FIND_PREV|FIND_ANY)
  885. #define AVIStreamNearestSample(pavi, pos) AVIStreamFindSample(pavi,pos,FIND_PREV|FIND_ANY)
  886. #define AVStreamNextKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos+1,FIND_NEXT|FIND_KEY)
  887. #define AVStreamPrevKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos-1,FIND_NEXT|FIND_KEY)
  888. #define AVIStreamNearestKeyFrame(pavi,pos) AVIStreamFindSample(pavi,pos,FIND_PREV|FIND_KEY)
  889. #define AVIStreamIsKeyFrame(pavi, pos) (AVIStreamNearestKeyFrame(pavi,pos) == pos)
  890. #ifdef __cplusplus
  891. #define MCIWndSM ::SendMessage
  892. #else
  893. #define MCIWndSM SendMessage
  894. #endif
  895. #define MCIWndCanPlay(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_PLAY,0,0)
  896. #define MCIWndCanRecord(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_RECORD,0,0)
  897. #define MCIWndCanSave(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_SAVE,0,0)
  898. #define MCIWndCanWindow(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_WINDOW,0,0)
  899. #define MCIWndCanEject(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_EJECT,0,0)
  900. #define MCIWndCanConfig(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_CAN_CONFIG,0,0)
  901. #define MCIWndPaletteKick(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_PALETTEKICK,0,0)
  902. #define MCIWndSave(hWnd,szFile) (LONG)MCIWndSM(hWnd,MCI_SAVE,0,(LPARAM)(LPVOID)(szFile))
  903. #define MCIWndSaveDialog(hWnd) MCIWndSave(hWnd,-1)
  904. #define MCIWndNew(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_NEW,0,(LPARAM)(LPVOID)(lp))
  905. #define MCIWndRecord(hWnd) (LONG)MCIWndSM(hWnd,MCI_RECORD,0,0)
  906. #define MCIWndOpen(hWnd,sz,f) (LONG)MCIWndSM(hWnd,MCIWNDM_OPEN,(WPARAM)(UINT)(f),(LPARAM)(LPVOID)(sz))
  907. #define MCIWndOpenDialog(hWnd) MCIWndOpen(hWnd,-1,0)
  908. #define MCIWndClose(hWnd) (LONG)MCIWndSM(hWnd,MCI_CLOSE,0,0)
  909. #define MCIWndPlay(hWnd) (LONG)MCIWndSM(hWnd,MCI_PLAY,0,0)
  910. #define MCIWndStop(hWnd) (LONG)MCIWndSM(hWnd,MCI_STOP,0,0)
  911. #define MCIWndPause(hWnd) (LONG)MCIWndSM(hWnd,MCI_PAUSE,0,0)
  912. #define MCIWndResume(hWnd) (LONG)MCIWndSM(hWnd,MCI_RESUME,0,0)
  913. #define MCIWndSeek(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCI_SEEK,0,(LPARAM)(LONG)(lPos))
  914. #define MCIWndEject(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_EJECT,0,0)
  915. #define MCIWndHome(hWnd) MCIWndSeek(hWnd,MCIWND_START)
  916. #define MCIWndEnd(hWnd) MCIWndSeek(hWnd,MCIWND_END)
  917. #define MCIWndGetSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_SOURCE,0,(LPARAM)(LPRECT)(prc))
  918. #define MCIWndPutSource(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_SOURCE,0,(LPARAM)(LPRECT)(prc))
  919. #define MCIWndGetDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_GET_DEST,0,(LPARAM)(LPRECT)(prc))
  920. #define MCIWndPutDest(hWnd,prc) (LONG)MCIWndSM(hWnd,MCIWNDM_PUT_DEST,0,(LPARAM)(LPRECT)(prc))
  921. #define MCIWndPlayReverse(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYREVERSE,0,0)
  922. #define MCIWndPlayFrom(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYFROM,0,(LPARAM)(LONG)(lPos))
  923. #define MCIWndPlayTo(hWnd,lPos) (LONG)MCIWndSM(hWnd,MCIWNDM_PLAYTO,  0,(LPARAM)(LONG)(lPos))
  924. #define MCIWndPlayFromTo(hWnd,lStart,lEnd) (MCIWndSeek(hWnd,lStart),MCIWndPlayTo(hWnd,lEnd))
  925. #define MCIWndGetDeviceID(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETDEVICEID,0,0)
  926. #define MCIWndGetAlias(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETALIAS,0,0)
  927. #define MCIWndGetMode(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETMODE,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
  928. #define MCIWndGetPosition(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,0,0)
  929. #define MCIWndGetPositionString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETPOSITION,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
  930. #define MCIWndGetStart(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSTART,0,0)
  931. #define MCIWndGetLength(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETLENGTH,0,0)
  932. #define MCIWndGetEnd(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETEND,0,0)
  933. #define MCIWndStep(hWnd,n) (LONG)MCIWndSM(hWnd,MCI_STEP,0,(LPARAM)(long)(n))
  934. #define MCIWndDestroy(hWnd) (VOID)MCIWndSM(hWnd,WM_CLOSE,0,0)
  935. #define MCIWndSetZoom(hWnd,iZoom) (VOID)MCIWndSM(hWnd,MCIWNDM_SETZOOM,0,(LPARAM)(UINT)(iZoom))
  936. #define MCIWndGetZoom(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETZOOM,0,0)
  937. #define MCIWndSetVolume(hWnd,iVol) (LONG)MCIWndSM(hWnd,MCIWNDM_SETVOLUME,0,(LPARAM)(UINT)(iVol))
  938. #define MCIWndGetVolume(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETVOLUME,0,0)
  939. #define MCIWndSetSpeed(hWnd,iSpeed) (LONG)MCIWndSM(hWnd,MCIWNDM_SETSPEED,0,(LPARAM)(UINT)(iSpeed))
  940. #define MCIWndGetSpeed(hWnd) (LONG)MCIWndSM(hWnd,MCIWNDM_GETSPEED,0,0)
  941. #define MCIWndSetTimeFormat(hWnd,lp) (LONG)MCIWndSM(hWnd,MCIWNDM_SETTIMEFORMAT,0,(LPARAM)(LPTSTR)(lp))
  942. #define MCIWndGetTimeFormat(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETTIMEFORMAT,(WPARAM)(UINT)(len),(LPARAM)(LPTSTR)(lp))
  943. #define MCIWndValidateMedia(hWnd) (VOID)MCIWndSM(hWnd,MCIWNDM_VALIDATEMEDIA,0,0)
  944. #define MCIWndSetRepeat(hWnd,f) (void)MCIWndSM(hWnd,MCIWNDM_SETREPEAT,0,(LPARAM)(BOOL)(f))
  945. #define MCIWndGetRepeat(hWnd) (BOOL)MCIWndSM(hWnd,MCIWNDM_GETREPEAT,0,0)
  946. #define MCIWndUseFrames(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("frames"))
  947. #define MCIWndUseTime(hWnd) MCIWndSetTimeFormat(hWnd,TEXT("ms"))
  948. #define MCIWndSetActiveTimer(hWnd,active) (VOID)MCIWndSM(hWnd,MCIWNDM_SETACTIVETIMER,(WPARAM)(UINT)(active),0L)
  949. #define MCIWndSetInactiveTimer(hWnd,inactive) (VOID)MCIWndSM(hWnd,MCIWNDM_SETINACTIVETIMER,(WPARAM)(UINT)(inactive),0L)
  950. #define MCIWndSetTimers(hWnd,active,inactive) (VOID)MCIWndSM(hWnd,MCIWNDM_SETTIMERS,(WPARAM)(UINT)(active),(LPARAM)(UINT)(inactive))
  951. #define MCIWndGetActiveTimer(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETACTIVETIMER,0,0L);
  952. #define MCIWndGetInactiveTimer(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETINACTIVETIMER,0,0L);
  953. #define MCIWndRealize(hWnd,fBkgnd) (LONG)MCIWndSM(hWnd,MCIWNDM_REALIZE,(WPARAM)(BOOL)(fBkgnd),0)
  954. #define MCIWndSendString(hWnd,sz) (LONG)MCIWndSM(hWnd,MCIWNDM_SENDSTRING,0,(LPARAM)(LPTSTR)(sz))
  955. #define MCIWndReturnString(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_RETURNSTRING,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
  956. #define MCIWndGetError(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETERROR,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
  957. #define MCIWndGetPalette(hWnd) (HPALETTE)MCIWndSM(hWnd,MCIWNDM_GETPALETTE,0,0)
  958. #define MCIWndSetPalette(hWnd,hpal) (LONG)MCIWndSM(hWnd,MCIWNDM_SETPALETTE,(WPARAM)(HPALETTE)(hpal),0)
  959. #define MCIWndGetFileName(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETFILENAME,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
  960. #define MCIWndGetDevice(hWnd,lp,len) (LONG)MCIWndSM(hWnd,MCIWNDM_GETDEVICE,(WPARAM)(UINT)(len),(LPARAM)(LPVOID)(lp))
  961. #define MCIWndGetStyles(hWnd) (UINT)MCIWndSM(hWnd,MCIWNDM_GETSTYLES,0,0L)
  962. #define MCIWndChangeStyles(hWnd,mask,value) (LONG)MCIWndSM(hWnd,MCIWNDM_CHANGESTYLES,(WPARAM)(UINT)(mask),(LPARAM)(LONG)(value))
  963. #define MCIWndOpenInterface(hWnd,pUnk) (LONG)MCIWndSM(hWnd,MCIWNDM_OPENINTERFACE,0,(LPARAM)(LPUNKNOWN)(pUnk))
  964. #define MCIWndSetOwner(hWnd,hWndP) (LONG)MCIWndSM(hWnd,MCIWNDM_SETOWNER,(WPARAM)(hWndP),0)
  965. #define DrawDibUpdate(hdd,hdc,x,y) DrawDibDraw(hdd,hdc,x,y,0,0,NULL,NULL,0,0,0,0,DDF_UPDATE)
  966. static __inline DWORD
  967. ICGetDefaultQuality(HIC hic)
  968. {
  969.    DWORD dwICValue;
  970.    ICSendMessage(hic, ICM_GETDEFAULTQUALITY, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD));
  971.    return dwICValue;
  972. }
  973. static __inline DWORD
  974. ICGetDefaultKeyFrameRate(HIC hic)
  975. {
  976.    DWORD dwICValue;
  977.    ICSendMessage(hic, ICM_GETDEFAULTKEYFRAMERATE, (DWORD)(LPVOID)&dwICValue, sizeof(DWORD));
  978.    return dwICValue;
  979. }
  980. static __inline LRESULT
  981. ICDrawSuggestFormat(HIC hic,LPBITMAPINFOHEADER lpbiIn,LPBITMAPINFOHEADER lpbiOut,INT dxSrc,INT dySrc,INT dxDst,INT dyDst,HIC hicDecomp)
  982. {
  983.     ICDRAWSUGGEST ic;
  984.     ic.lpbiIn = lpbiIn;
  985.     ic.lpbiSuggest = lpbiOut;
  986.     ic.dxSrc = dxSrc;
  987.     ic.dySrc = dySrc;
  988.     ic.dxDst = dxDst;
  989.     ic.dyDst = dyDst;
  990.     ic.hicDecompressor = hicDecomp;
  991.     return ICSendMessage(hic,ICM_DRAW_SUGGESTFORMAT,(DWORD)&ic,sizeof(ic));
  992. }
  993. static __inline LRESULT
  994. ICSetStatusProc(HIC hic,DWORD dwFlags,LRESULT lParam,LONG (CALLBACK *fpfnStatus)(LPARAM,UINT,LONG))
  995. {
  996.     ICSETSTATUSPROC ic;
  997.     ic.dwFlags = dwFlags;
  998.     ic.lParam = lParam;
  999.     ic.Status = fpfnStatus;
  1000.     return ICSendMessage(hic,ICM_SET_STATUS_PROC,(DWORD)&ic,sizeof(ic));
  1001. }
  1002. static __inline LRESULT 
  1003. ICDecompressEx(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
  1004. {
  1005.     ICDECOMPRESSEX ic;
  1006.     ic.dwFlags = dwFlags;
  1007.     ic.lpbiSrc = lpbiSrc;
  1008.     ic.lpSrc = lpSrc;
  1009.     ic.xSrc = xSrc;
  1010.     ic.ySrc = ySrc;
  1011.     ic.dxSrc = dxSrc;
  1012.     ic.dySrc = dySrc;
  1013.     ic.lpbiDst = lpbiDst;
  1014.     ic.lpDst = lpDst;
  1015.     ic.xDst = xDst;
  1016.     ic.yDst = yDst;
  1017.     ic.dxDst = dxDst;
  1018.     ic.dyDst = dyDst;
  1019.     return ICSendMessage(hic,ICM_DECOMPRESSEX,(DWORD)&ic,sizeof(ic));
  1020. }
  1021. static __inline LRESULT
  1022. ICDecompressExBegin(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
  1023. {
  1024.     ICDECOMPRESSEX ic;
  1025.     ic.dwFlags = dwFlags;
  1026.     ic.lpbiSrc = lpbiSrc;
  1027.     ic.lpSrc = lpSrc;
  1028.     ic.xSrc = xSrc;
  1029.     ic.ySrc = ySrc;
  1030.     ic.dxSrc = dxSrc;
  1031.     ic.dySrc = dySrc;
  1032.     ic.lpbiDst = lpbiDst;
  1033.     ic.lpDst = lpDst;
  1034.     ic.xDst = xDst;
  1035.     ic.yDst = yDst;
  1036.     ic.dxDst = dxDst;
  1037.     ic.dyDst = dyDst;
  1038.     return ICSendMessage(hic,ICM_DECOMPRESSEX_BEGIN,(DWORD)&ic,sizeof(ic));
  1039. }
  1040. static __inline LRESULT
  1041. ICDecompressExQuery(HIC hic,DWORD dwFlags,LPBITMAPINFOHEADER lpbiSrc,LPVOID lpSrc,INT xSrc,INT ySrc,INT dxSrc,INT dySrc,LPBITMAPINFOHEADER lpbiDst,LPVOID lpDst,INT xDst,INT yDst,INT dxDst,INT dyDst)
  1042. {
  1043.     ICDECOMPRESSEX ic;
  1044.     ic.dwFlags = dwFlags;
  1045.     ic.lpbiSrc = lpbiSrc;
  1046.     ic.lpSrc = lpSrc;
  1047.     ic.xSrc = xSrc;
  1048.     ic.ySrc = ySrc;
  1049.     ic.dxSrc = dxSrc;
  1050.     ic.dySrc = dySrc;
  1051.     ic.lpbiDst = lpbiDst;
  1052.     ic.lpDst = lpDst;
  1053.     ic.xDst = xDst;
  1054.     ic.yDst = yDst;
  1055.     ic.dxDst = dxDst;
  1056.     ic.dyDst = dyDst;
  1057.     return ICSendMessage(hic,ICM_DECOMPRESSEX_QUERY,(DWORD)&ic,sizeof(ic));
  1058. }
  1059.  
  1060. #ifdef UNICODE
  1061. #define AVISTREAMINFO AVISTREAMINFOW
  1062. #define LPAVISTREAMINFO LPAVISTREAMINFOW
  1063. #define PAVISTREAMINFO PAVISTREAMINFOW
  1064. #define AVIFILEINFO AVIFILEINFOW
  1065. #define PAVIFILEINFO PAVIFILEINFOW
  1066. #define LPAVIFILEINFO LPAVIFILEINFOW
  1067. #define AVIStreamInfo AVIStreamInfoW
  1068. #define AVIStreamOpenFromFile AVIStreamOpenFromFileW
  1069. #define AVIBuildFilter AVIBuildFilterW
  1070. #define AVISaveV AVISaveVW
  1071. #define EditStreamSetInfo EditStreamSetInfoW
  1072. #define EditStreamSetName EditStreamSetNameW
  1073. #define AVIFileOpen AVIFileOpenW
  1074. #define AVIFileInfo AVIFileInfoW
  1075. #define AVIFileCreateStream AVIFileCreateStreamW
  1076. #define GetOpenFileNamePreview GetOpenFileNamePreviewW
  1077. #define GetSaveFileNamePreview GetSaveFileNamePreviewW
  1078. #define MCIWndCreate MCIWndCreateW
  1079. #define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAW
  1080. #define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGW
  1081. #define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONW
  1082. #define MCIWNDM_GETMODE MCIWNDM_GETMODEW
  1083. #define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATW
  1084. #define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATW
  1085. #define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEW
  1086. #define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEW
  1087. #define MCIWNDM_GETERROR MCIWNDM_GETERRORW
  1088. #define MCIWNDM_NEW MCIWNDM_NEWW
  1089. #define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGW
  1090. #define MCIWNDM_OPEN MCIWNDM_OPENW
  1091. #else
  1092. #define AVISTREAMINFO AVISTREAMINFOA
  1093. #define LPAVISTREAMINFO LPAVISTREAMINFOA
  1094. #define PAVISTREAMINFO PAVISTREAMINFOA
  1095. #define AVIFILEINFO AVIFILEINFOA
  1096. #define PAVIFILEINFO PAVIFILEINFOA
  1097. #define LPAVIFILEINFO LPAVIFILEINFOA
  1098. #define AVIStreamInfo AVIStreamInfoA
  1099. #define AVIStreamOpenFromFile AVIStreamOpenFromFileA
  1100. #define AVIBuildFilter AVIBuildFilterA
  1101. #define AVISaveV AVISaveVA
  1102. #define EditStreamSetInfo EditStreamSetInfoA
  1103. #define EditStreamSetName EditStreamSetNameA
  1104. #define AVIFileOpen AVIFileOpenA
  1105. #define AVIFileInfo AVIFileInfoA
  1106. #define AVIFileCreateStream AVIFileCreateStreamA
  1107. #define GetOpenFileNamePreview GetOpenFileNamePreviewA
  1108. #define GetSaveFileNamePreview GetSaveFileNamePreviewA
  1109. #define MCIWndCreate MCIWndCreateA
  1110. #define MCIWNDF_NOTIFYMEDIA MCIWNDF_NOTIFYMEDIAA
  1111. #define MCIWNDM_SENDSTRING MCIWNDM_SENDSTRINGA
  1112. #define MCIWNDM_GETPOSITION MCIWNDM_GETPOSITIONA
  1113. #define MCIWNDM_GETMODE MCIWNDM_GETMODEA
  1114. #define MCIWNDM_SETTIMEFORMAT MCIWNDM_SETTIMEFORMATA
  1115. #define MCIWNDM_GETTIMEFORMAT MCIWNDM_GETTIMEFORMATA
  1116. #define MCIWNDM_GETFILENAME MCIWNDM_GETFILENAMEA
  1117. #define MCIWNDM_GETDEVICE MCIWNDM_GETDEVICEA
  1118. #define MCIWNDM_GETERROR MCIWNDM_GETERRORA
  1119. #define MCIWNDM_NEW MCIWNDM_NEWA
  1120. #define MCIWNDM_RETURNSTRING MCIWNDM_RETURNSTRINGA
  1121. #define MCIWNDM_OPEN MCIWNDM_OPENA
  1122. #endif
  1123.  
  1124. #endif /* RC_INVOKED */
  1125.  
  1126. #ifdef __cplusplus
  1127. }
  1128. #endif
  1129. #include <poppack.h>
  1130. #endif /* _VFW_H */
  1131.