home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / advanc2a / vbavicap.bas < prev    next >
Encoding:
BASIC Source File  |  1998-03-13  |  23.6 KB  |  424 lines

  1. Attribute VB_Name = "AVICAP"
  2. '*
  3. '* Author: E. J. Bantz Jr.
  4. '* Copyright: None, use and distribute freely ...
  5. '* E-Mail: ej@bantz.com
  6. '* Web: http://ej.bantz.com/video
  7.  
  8. '// ------------------------------------------------------------------
  9. '//  Windows API Constants / Types / Declarations
  10. '// ------------------------------------------------------------------
  11. Public Const WM_USER = &H400
  12. Type POINTAPI
  13.         x As Long
  14.         y As Long
  15. End Type
  16. Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
  17. Declare Function SendMessageS Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As String) As Long
  18.  
  19. '// ------------------------------------------------------------------
  20. '//  Window Messages  WM_CAP... which can be sent to an AVICAP window
  21. '// ------------------------------------------------------------------
  22.  
  23. '// Defines start of the message range
  24. Public Const WM_CAP_START = WM_USER
  25.  
  26. Public Const WM_CAP_GET_CAPSTREAMPTR = WM_CAP_START + 1
  27.  
  28. Public Const WM_CAP_SET_CALLBACK_ERROR = WM_CAP_START + 2
  29. Public Const WM_CAP_SET_CALLBACK_STATUS = WM_CAP_START + 3
  30. Public Const WM_CAP_SET_CALLBACK_YIELD = WM_CAP_START + 4
  31. Public Const WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5
  32. Public Const WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6
  33. Public Const WM_CAP_SET_CALLBACK_WAVESTREAM = WM_CAP_START + 7
  34. Public Const WM_CAP_GET_USER_DATA = WM_CAP_START + 8
  35. Public Const WM_CAP_SET_USER_DATA = WM_CAP_START + 9
  36.     
  37. Public Const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10
  38. Public Const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11
  39. Public Const WM_CAP_DRIVER_GET_NAME = WM_CAP_START + 12
  40. Public Const WM_CAP_DRIVER_GET_VERSION = WM_CAP_START + 13
  41. Public Const WM_CAP_DRIVER_GET_CAPS = WM_CAP_START + 14
  42.  
  43. Public Const WM_CAP_FILE_SET_CAPTURE_FILE = WM_CAP_START + 20
  44. Public Const WM_CAP_FILE_GET_CAPTURE_FILE = WM_CAP_START + 21
  45. Public Const WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22
  46. Public Const WM_CAP_FILE_SAVEAS = WM_CAP_START + 23
  47. Public Const WM_CAP_FILE_SET_INFOCHUNK = WM_CAP_START + 24
  48. Public Const WM_CAP_FILE_SAVEDIB = WM_CAP_START + 25
  49.  
  50. Public Const WM_CAP_EDIT_COPY = WM_CAP_START + 30
  51.  
  52. Public Const WM_CAP_SET_AUDIOFORMAT = WM_CAP_START + 35
  53. Public Const WM_CAP_GET_AUDIOFORMAT = WM_CAP_START + 36
  54.  
  55. Public Const WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START + 41
  56. Public Const WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START + 42
  57. Public Const WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START + 43
  58. Public Const WM_CAP_GET_VIDEOFORMAT = WM_CAP_START + 44
  59. Public Const WM_CAP_SET_VIDEOFORMAT = WM_CAP_START + 45
  60. Public Const WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46
  61.  
  62. Public Const WM_CAP_SET_PREVIEW = WM_CAP_START + 50
  63. Public Const WM_CAP_SET_OVERLAY = WM_CAP_START + 51
  64. Public Const WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52
  65. Public Const WM_CAP_SET_SCALE = WM_CAP_START + 53
  66. Public Const WM_CAP_GET_STATUS = WM_CAP_START + 54
  67. Public Const WM_CAP_SET_SCROLL = WM_CAP_START + 55
  68.  
  69. Public Const WM_CAP_GRAB_FRAME = WM_CAP_START + 60
  70. Public Const WM_CAP_GRAB_FRAME_NOSTOP = WM_CAP_START + 61
  71.  
  72. Public Const WM_CAP_SEQUENCE = WM_CAP_START + 62
  73. Public Const WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63
  74. Public Const WM_CAP_SET_SEQUENCE_SETUP = WM_CAP_START + 64
  75. Public Const WM_CAP_GET_SEQUENCE_SETUP = WM_CAP_START + 65
  76. Public Const WM_CAP_SET_MCI_DEVICE = WM_CAP_START + 66
  77. Public Const WM_CAP_GET_MCI_DEVICE = WM_CAP_START + 67
  78. Public Const WM_CAP_STOP = WM_CAP_START + 68
  79. Public Const WM_CAP_ABORT = WM_CAP_START + 69
  80.  
  81. Public Const WM_CAP_SINGLE_FRAME_OPEN = WM_CAP_START + 70
  82. Public Const WM_CAP_SINGLE_FRAME_CLOSE = WM_CAP_START + 71
  83. Public Const WM_CAP_SINGLE_FRAME = WM_CAP_START + 72
  84.  
  85. Public Const WM_CAP_PAL_OPEN = WM_CAP_START + 80
  86. Public Const WM_CAP_PAL_SAVE = WM_CAP_START + 81
  87. Public Const WM_CAP_PAL_PASTE = WM_CAP_START + 82
  88. Public Const WM_CAP_PAL_AUTOCREATE = WM_CAP_START + 83
  89. Public Const WM_CAP_PAL_MANUALCREATE = WM_CAP_START + 84
  90.  
  91. '// Following added post VFW 1.1
  92. Public Const WM_CAP_SET_CALLBACK_CAPCONTROL = WM_CAP_START + 85
  93.  
  94. '// Defines end of the message range
  95. Public Const WM_CAP_END = WM_CAP_SET_CALLBACK_CAPCONTROL
  96.  
  97. '// ------------------------------------------------------------------
  98. '//  Structures
  99. '// ------------------------------------------------------------------
  100. Type CAPDRIVERCAPS
  101.     wDeviceIndex As Long '               // Driver index in system.ini
  102.     fHasOverlay As Long '                // Can device overlay?
  103.     fHasDlgVideoSource As Long '         // Has Video source dlg?
  104.     fHasDlgVideoFormat As Long '         // Has Format dlg?
  105.     fHasDlgVideoDisplay As Long '        // Has External out dlg?
  106.     fCaptureInitialized As Long '        // Driver ready to capture?
  107.     fDriverSuppliesPalettes As Long '    // Can driver make palettes?
  108.     hVideoIn As Long '                   // Driver In channel
  109.     hVideoOut As Long '                  // Driver Out channel
  110.     hVideoExtIn As Long '                // Driver Ext In channel
  111.     hVideoExtOut As Long '               // Driver Ext Out channel
  112. End Type
  113.  
  114. Type CAPSTATUS
  115.     uiImageWidth As Long                    '// Width of the image
  116.     uiImageHeight As Long                   '// Height of the image
  117.     fLiveWindow As Long                     '// Now Previewing video?
  118.     fOverlayWindow As Long                  '// Now Overlaying video?
  119.     fScale As Long                          '// Scale image to client?
  120.     ptScroll As POINTAPI                    '// Scroll position
  121.     fUsingDefaultPalette As Long            '// Using default driver palette?
  122.     fAudioHardware As Long                  '// Audio hardware present?
  123.     fCapFileExists As Long                  '// Does capture file exist?
  124.     dwCurrentVideoFrame As Long             '// # of video frames cap'td
  125.     dwCurrentVideoFramesDropped As Long     '// # of video frames dropped
  126.     dwCurrentWaveSamples As Long            '// # of wave samples cap'td
  127.     dwCurrentTimeElapsedMS As Long          '// Elapsed capture duration
  128.     hPalCurrent As Long                     '// Current palette in use
  129.     fCapturingNow As Long                   '// Capture in progress?
  130.     dwReturn As Long                        '// Error value after any operation
  131.     wNumVideoAllocated As Long              '// Actual number of video buffers
  132.     wNumAudioAllocated As Long              '// Actual number of audio buffers
  133. End Type
  134.  
  135. Type CAPTUREPARMS
  136.     dwRequestMicroSecPerFrame As Long       '// Requested capture rate
  137.     fMakeUserHitOKToCapture As Long         '// Show "Hit OK to cap" dlg?
  138.     wPercentDropForError As Long            '// Give error msg if > (10%)
  139.     fYield As Long                          '// Capture via background task?
  140.     dwIndexSize As Long                     '// Max index size in frames (32K)
  141.     wChunkGranularity As Long               '// Junk chunk granularity (2K)
  142.     fUsingDOSMemory As Long                 '// Use DOS buffers?
  143.     wNumVideoRequested As Long              '// # video buffers, If 0, autocalc
  144.     fCaptureAudio As Long                   '// Capture audio?
  145.     wNumAudioRequested As Long              '// # audio buffers, If 0, autocalc
  146.     vKeyAbort As Long                       '// Virtual key causing abort
  147.     fAbortLeftMouse As Long                 '// Abort on left mouse?
  148.     fAbortRightMouse As Long                '// Abort on right mouse?
  149.     fLimitEnabled As Long                   '// Use wTimeLimit?
  150.     wTimeLimit As Long                      '// Seconds to capture
  151.     fMCIControl As Long                     '// Use MCI video source?
  152.     fStepMCIDevice As Long                  '// Step MCI device?
  153.     dwMCIStartTime As Long                  '// Time to start in MS
  154.     dwMCIStopTime As Long                   '// Time to stop in MS
  155.     fStepCaptureAt2x As Long                '// Perform spatial averaging 2x
  156.     wStepCaptureAverageFrames As Long       '// Temporal average n Frames
  157.     dwAudioBufferSize As Long               '// Size of audio bufs (0 = default)
  158.     fDisableWriteCache As Long              '// Attempt to disable write cache
  159. End Type
  160.  
  161. Type CAPINFOCHUNK
  162.     fccInfoID As Long                       '// Chunk ID, "ICOP" for copyright
  163.     lpData As Long                          '// pointer to data
  164.     cbData As Long                          '// size of lpData
  165. End Type
  166.  
  167. Type VIDEOHDR
  168.     lpData As Long '// address of video buffer
  169.     dwBufferLength As Long '// size, in bytes, of the Data buffer
  170.     dwBytesUsed As Long '// see below
  171.     dwTimeCaptured As Long '// see below
  172.     dwUser As Long '// user-specific data
  173.     dwFlags As Long '// see below
  174.     dwReserved(3) As Long '// reserved; do not use}
  175. End Type
  176.  
  177. '// The two functions exported by AVICap
  178. Declare Function capCreateCaptureWindowA Lib "avicap32.dll" ( _
  179.     ByVal lpszWindowName As String, _
  180.     ByVal dwStyle As Long, _
  181.     ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Integer, _
  182.     ByVal hWndParent As Long, ByVal nID As Long) As Long
  183. Declare Function capGetDriverDescriptionA Lib "avicap32.dll" ( _
  184.     ByVal wDriver As Integer, _
  185.     ByVal lpszName As String, _
  186.     ByVal cbName As Long, _
  187.     ByVal lpszVer As String, _
  188.     ByVal cbVer As Long) As Boolean
  189.  
  190. '// ------------------------------------------------------------------
  191. '// String IDs from status and error callbacks
  192. '// ------------------------------------------------------------------
  193.  
  194. Public Const IDS_CAP_BEGIN = 300              '/* "Capture Start" */
  195. Public Const IDS_CAP_END = 301                '/* "Capture End" */
  196.  
  197. Public Const IDS_CAP_INFO = 401               '/* "%s" */
  198. Public Const IDS_CAP_OUTOFMEM = 402           '/* "Out of memory" */
  199. Public Const IDS_CAP_FILEEXISTS = 403         '/* "File '%s' exists -- overwrite it?" */
  200. Public Const IDS_CAP_ERRORPALOPEN = 404       '/* "Error opening palette '%s'" */
  201. Public Const IDS_CAP_ERRORPALSAVE = 405       '/* "Error saving palette '%s'" */
  202. Public Const IDS_CAP_ERRORDIBSAVE = 406       '/* "Error saving frame '%s'" */
  203. Public Const IDS_CAP_DEFAVIEXT = 407          '/* "avi" */
  204. Public Const IDS_CAP_DEFPALEXT = 408          '/* "pal" */
  205. Public Const IDS_CAP_CANTOPEN = 409           '/* "Cannot open '%s'" */
  206. Public Const IDS_CAP_SEQ_MSGSTART = 410       '/* "Select OK to start capture\nof video sequence\nto %s." */
  207. Public Const IDS_CAP_SEQ_MSGSTOP = 411        '/* "Hit ESCAPE or click to end capture" */
  208.                 
  209. Public Const IDS_CAP_VIDEDITERR = 412         '/* "An error occurred while trying to run VidEdit." */
  210. Public Const IDS_CAP_READONLYFILE = 413       '/* "The file '%s' is a read-only file." */
  211. Public Const IDS_CAP_WRITEERROR = 414         '/* "Unable to write to file '%s'.\nDisk may be full." */
  212. Public Const IDS_CAP_NODISKSPACE = 415        '/* "There is no space to create a capture file on the specified device." */
  213. Public Const IDS_CAP_SETFILESIZE = 416        '/* "Set File Size" */
  214. Public Const IDS_CAP_SAVEASPERCENT = 417      '/* "SaveAs: %2ld%%  Hit Escape to abort." */
  215.                 
  216. Public Const IDS_CAP_DRIVER_ERROR = 418       '/* Driver specific error message */
  217.  
  218. Public Const IDS_CAP_WAVE_OPEN_ERROR = 419    '/* "Error: Cannot open the wave input device.\nCheck sample size, frequency, and channels." */
  219. Public Const IDS_CAP_WAVE_ALLOC_ERROR = 420   '/* "Error: Out of memory for wave buffers." */
  220. Public Const IDS_CAP_WAVE_PREPARE_ERROR = 421 '/* "Error: Cannot prepare wave buffers." */
  221. Public Const IDS_CAP_WAVE_ADD_ERROR = 422     '/* "Error: Cannot add wave buffers." */
  222. Public Const IDS_CAP_WAVE_SIZE_ERROR = 423    '/* "Error: Bad wave size." */
  223.                 
  224. Public Const IDS_CAP_VIDEO_OPEN_ERROR = 424   '/* "Error: Cannot open the video input device." */
  225. Public Const IDS_CAP_VIDEO_ALLOC_ERROR = 425  '/* "Error: Out of memory for video buffers." */
  226. Public Const IDS_CAP_VIDEO_PREPARE_ERROR = 426 '/* "Error: Cannot prepare video buffers." */
  227. Public Const IDS_CAP_VIDEO_ADD_ERROR = 427    '/* "Error: Cannot add video buffers." */
  228. Public Const IDS_CAP_VIDEO_SIZE_ERROR = 428   '/* "Error: Bad video size." */
  229.                 
  230. Public Const IDS_CAP_FILE_OPEN_ERROR = 429    '/* "Error: Cannot open capture file." */
  231. Public Const IDS_CAP_FILE_WRITE_ERROR = 430   '/* "Error: Cannot write to capture file.  Disk may be full." */
  232. Public Const IDS_CAP_RECORDING_ERROR = 431    '/* "Error: Cannot write to capture file.  Data rate too high or disk full." */
  233. Public Const IDS_CAP_RECORDING_ERROR2 = 432   '/* "Error while recording" */
  234. Public Const IDS_CAP_AVI_INIT_ERROR = 433     '/* "Error: Unable to initialize for capture." */
  235. Public Const IDS_CAP_NO_FRAME_CAP_ERROR = 434 '/* "Warning: No frames captured.\nConfirm that vertical sync interrupts\nare configured and enabled." */
  236. Public Const IDS_CAP_NO_PALETTE_WARN = 435    '/* "Warning: Using default palette." */
  237. Public Const IDS_CAP_MCI_CONTROL_ERROR = 436  '/* "Error: Unable to access MCI device." */
  238. Public Const IDS_CAP_MCI_CANT_STEP_ERROR = 437 '/* "Error: Unable to step MCI device." */
  239. Public Const IDS_CAP_NO_AUDIO_CAP_ERROR = 438 '/* "Error: No audio data captured.\nCheck audio card settings." */
  240. Public Const IDS_CAP_AVI_DRAWDIB_ERROR = 439  '/* "Error: Unable to draw this data format." */
  241. Public Const IDS_CAP_COMPRESSOR_ERROR = 440   '/* "Error: Unable to initialize compressor." */
  242. Public Const IDS_CAP_AUDIO_DROP_ERROR = 441   '/* "Error: Audio data was lost during capture, reduce capture rate." */
  243.                 
  244. '/* status string IDs */
  245. Public Const IDS_CAP_STAT_LIVE_MODE = 500      '/* "Live window" */
  246. Public Const IDS_CAP_STAT_OVERLAY_MODE = 501   '/* "Overlay window" */
  247. Public Const IDS_CAP_STAT_CAP_INIT = 502       '/* "Setting up for capture - Please wait" */
  248. Public Const IDS_CAP_STAT_CAP_FINI = 503       '/* "Finished capture, now writing frame %ld" */
  249. Public Const IDS_CAP_STAT_PALETTE_BUILD = 504  '/* "Building palette map" */
  250. Public Const IDS_CAP_STAT_OPTPAL_BUILD = 505   '/* "Computing optimal palette" */
  251. Public Const IDS_CAP_STAT_I_FRAMES = 506       '/* "%d frames" */
  252. Public Const IDS_CAP_STAT_L_FRAMES = 507       '/* "%ld frames" */
  253. Public Const IDS_CAP_STAT_CAP_L_FRAMES = 508   '/* "Captured %ld frames" */
  254. Public Const IDS_CAP_STAT_CAP_AUDIO = 509      '/* "Capturing audio" */
  255. Public Const IDS_CAP_STAT_VIDEOCURRENT = 510   '/* "Captured %ld frames (%ld dropped) %d.%03d sec." */
  256. Public Const IDS_CAP_STAT_VIDEOAUDIO = 511     '/* "Captured %d.%03d sec.  %ld frames (%ld dropped) (%d.%03d fps).  %ld audio bytes (%d,%03d sps)" */
  257. Public Const IDS_CAP_STAT_VIDEOONLY = 512      '/* "Captured %d.%03d sec.  %ld frames (%ld dropped) (%d.%03d fps)" */
  258. Function capSetCallbackOnError(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
  259.    capSetCallbackOnError = SendMessage(lwnd, WM_CAP_SET_CALLBACK_ERROR, 0, lpProc)
  260. End Function
  261. Function capSetCallbackOnStatus(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
  262.    capSetCallbackOnStatus = SendMessage(lwnd, WM_CAP_SET_CALLBACK_STATUS, 0, lpProc)
  263. End Function
  264. Function capSetCallbackOnYield(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
  265.    capSetCallbackOnYield = SendMessage(lwnd, WM_CAP_SET_CALLBACK_YIELD, 0, lpProc)
  266. End Function
  267. Function capSetCallbackOnFrame(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
  268.    capSetCallbackOnFrame = SendMessage(lwnd, WM_CAP_SET_CALLBACK_FRAME, 0, lpProc)
  269. End Function
  270. Function capSetCallbackOnVideoStream(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
  271.    capSetCallbackOnVideoStream = SendMessage(lwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, lpProc)
  272. End Function
  273. Function capSetCallbackOnWaveStream(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
  274.    capSetCallbackOnWaveStream = SendMessage(lwnd, WM_CAP_SET_CALLBACK_WAVESTREAM, 0, lpProc)
  275. End Function
  276. Function capSetCallbackOnCapControl(ByVal lwnd As Long, ByVal lpProc As Long) As Boolean
  277.    capSetCallbackOnCapControl = SendMessage(lwnd, WM_CAP_SET_CALLBACK_CAPCONTROL, 0, lpProc)
  278. End Function
  279. Function capSetUserData(ByVal lwnd As Long, ByVal lUser As Long) As Boolean
  280.    capSetUserData = SendMessage(lwnd, WM_CAP_SET_USER_DATA, 0, lUser)
  281. End Function
  282. Function capGetUserData(ByVal lwnd As Long) As Long
  283.    capGetUserData = SendMessage(lwnd, WM_CAP_GET_USER_DATA, 0, 0)
  284. End Function
  285. Function capDriverConnect(ByVal lwnd As Long, ByVal i As Integer) As Boolean
  286.    capDriverConnect = SendMessage(lwnd, WM_CAP_DRIVER_CONNECT, i, 0)
  287. End Function
  288. Function capDriverDisconnect(ByVal lwnd As Long) As Boolean
  289.    capDriverDisconnect = SendMessage(lwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0)
  290. End Function
  291. Function capDriverGetName(ByVal lwnd As Long, ByVal szName As Long, ByVal wSize As Integer) As Boolean
  292.    capDriverGetName = SendMessage(lwnd, YOURCONSTANTMESSAGE, wSize, szName)
  293. End Function
  294. Function capDriverGetVersion(ByVal lwnd As Long, ByVal szVer As Long, ByVal wSize As Integer) As Boolean
  295.    capDriverGetVersion = SendMessage(lwnd, WM_CAP_DRIVER_GET_VERSION, wSize, szVer)
  296. End Function
  297. Function capDriverGetCaps(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Boolean
  298.    capDriverGetCaps = SendMessage(lwnd, WM_CAP_DRIVER_GET_CAPS, wSize, s)
  299. End Function
  300. Function capFileSetCaptureFile(ByVal lwnd As Long, szName As String) As Boolean
  301.    capFileSetCaptureFile = SendMessageS(lwnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, szName)
  302. End Function
  303. Function capFileGetCaptureFile(ByVal lwnd As Long, ByVal szName As Long, wSize As String) As Boolean
  304.    capFileGetCaptureFile = SendMessageS(lwnd, WM_CAP_FILE_SET_CAPTURE_FILE, wSize, szName)
  305. End Function
  306. Function capFileAlloc(ByVal lwnd As Long, ByVal dwSize As Long) As Boolean
  307.    capFileAlloc = SendMessage(lwnd, WM_CAP_FILE_ALLOCATE, 0, dwSize)
  308. End Function
  309. Function capFileSaveAs(ByVal lwnd As Long, szName As String) As Boolean
  310.    capFileSaveAs = SendMessageS(lwnd, WM_CAP_FILE_SAVEAS, 0, szName)
  311. End Function
  312. Function capFileSetInfoChunk(ByVal lwnd As Long, ByVal lpInfoChunk As Long) As Boolean
  313.    capFileSetInfoChunk = SendMessage(lwnd, WM_CAP_FILE_SET_INFOCHUNK, 0, lpInfoChunk)
  314. End Function
  315. Function capFileSaveDIB(ByVal lwnd As Long, ByVal szName As Long) As Boolean
  316.    capFileSaveDIB = SendMessage(lwnd, WM_CAP_FILE_SAVEDIB, 0, szName)
  317. End Function
  318. Function capEditCopy(ByVal lwnd As Long) As Boolean
  319.    capEditCopy = SendMessage(lwnd, WM_CAP_EDIT_COPY, 0, 0)
  320. End Function
  321. Function capSetAudioFormat(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Boolean
  322.    capSetAudioFormat = SendMessage(lwnd, WM_CAP_SET_AUDIOFORMAT, wSize, s)
  323. End Function
  324. Function capGetAudioFormat(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Long
  325.    capGetAudioFormat = SendMessage(lwnd, WM_CAP_GET_AUDIOFORMAT, wSize, s)
  326. End Function
  327. Function capGetAudioFormatSize(ByVal lwnd As Long) As Long
  328.    capGetAudioFormatSize = SendMessage(lwnd, WM_CAP_GET_AUDIOFORMAT, 0, 0)
  329. End Function
  330. Function capDlgVideoFormat(ByVal lwnd As Long) As Boolean
  331.    capDlgVideoFormat = SendMessage(lwnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0)
  332. End Function
  333. Function capDlgVideoSource(ByVal lwnd As Long) As Boolean
  334.    capDlgVideoSource = SendMessage(lwnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0)
  335. End Function
  336. Function capDlgVideoDisplay(ByVal lwnd As Long) As Boolean
  337.    capDlgVideoDisplay = SendMessage(lwnd, WM_CAP_DLG_VIDEODISPLAY, 0, 0)
  338. End Function
  339. Function capDlgVideoCompression(ByVal lwnd As Long) As Boolean
  340.    capDlgVideoCompression = SendMessage(lwnd, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0)
  341. End Function
  342. Function capGetVideoFormat(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Long
  343.    capGetVideoFormat = SendMessage(lwnd, WM_CAP_GET_VIDEOFORMAT, wSize, s)
  344. End Function
  345. Function capGetVideoFormatSize(ByVal lwnd As Long) As Long
  346.    capGetVideoFormatSize = SendMessage(lwnd, WM_CAP_GET_VIDEOFORMAT, 0, 0)
  347. End Function
  348. Function capSetVideoFormat(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Boolean
  349.    capSetVideoFormat = SendMessage(lwnd, WM_CAP_SET_VIDEOFORMAT, wSize, s)
  350. End Function
  351. Function capPreview(ByVal lwnd As Long, ByVal f As Boolean) As Boolean
  352.    capPreview = SendMessage(lwnd, WM_CAP_SET_PREVIEW, f, 0)
  353. End Function
  354. Function capPreviewRate(ByVal lwnd As Long, ByVal wMS As Integer) As Boolean
  355.    capPreviewRate = SendMessage(lwnd, WM_CAP_SET_PREVIEWRATE, wMS, 0)
  356. End Function
  357. Function capOverlay(ByVal lwnd As Long, ByVal f As Boolean) As Boolean
  358.    capOverlay = SendMessage(lwnd, WM_CAP_SET_OVERLAY, f, 0)
  359. End Function
  360. Function capPreviewScale(ByVal lwnd As Long, ByVal f As Boolean) As Boolean
  361.    capPreviewScale = SendMessage(lwnd, WM_CAP_SET_SCALE, f, 0)
  362. End Function
  363. Function capGetStatus(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Boolean
  364.    capGetStatus = SendMessage(lwnd, WM_CAP_GET_STATUS, wSize, s)
  365. End Function
  366. Function capSetScrollPos(ByVal lwnd As Long, ByVal lpP As Long) As Boolean
  367.    capSetScrollPos = SendMessage(lwnd, WM_CAP_SET_SCROLL, 0, lpP)
  368. End Function
  369. Function capGrabFrame(ByVal lwnd As Long) As Boolean
  370.    capGrabFrame = SendMessage(lwnd, WM_CAP_GRAB_FRAME, 0, 0)
  371. End Function
  372. Function capGrabFrameNoStop(ByVal lwnd As Long) As Boolean
  373.    capGrabFrameNoStop = SendMessage(lwnd, WM_CAP_GRAB_FRAME_NOSTOP, 0, 0)
  374. End Function
  375. Function capCaptureSequence(ByVal lwnd As Long) As Boolean
  376.    capCaptureSequence = SendMessage(lwnd, WM_CAP_SEQUENCE, 0, 0)
  377. End Function
  378. Function capCaptureSequenceNoFile(ByVal lwnd As Long) As Boolean
  379.    capCaptureSequenceNoFile = SendMessage(lwnd, WM_CAP_SEQUENCE_NOFILE, 0, 0)
  380. End Function
  381. Function capCaptureStop(ByVal lwnd As Long) As Boolean
  382.    capCaptureStop = SendMessage(lwnd, WM_CAP_STOP, 0, 0)
  383. End Function
  384. Function capCaptureAbort(ByVal lwnd As Long) As Boolean
  385.    capCaptureAbort = SendMessage(lwnd, WM_CAP_ABORT, 0, 0)
  386. End Function
  387. Function capCaptureSingleFrameOpen(ByVal lwnd As Long) As Boolean
  388.    capCaptureSingleFrameOpen = SendMessage(lwnd, WM_CAP_SINGLE_FRAME_OPEN, 0, 0)
  389. End Function
  390. Function capCaptureSingleFrameClose(ByVal lwnd As Long) As Boolean
  391.    capCaptureSingleFrameClose = SendMessage(lwnd, WM_CAP_SINGLE_FRAME_CLOSE, 0, 0)
  392. End Function
  393. Function capCaptureSingleFrame(ByVal lwnd As Long) As Boolean
  394.    capCaptureSingleFrame = SendMessage(lwnd, WM_CAP_SINGLE_FRAME, 0, 0)
  395. End Function
  396. Function capCaptureGetSetup(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Boolean
  397.    capCaptureGetSetup = SendMessage(lwnd, WM_CAP_GET_SEQUENCE_SETUP, wSize, s)
  398. End Function
  399. Function capCaptureSetSetup(ByVal lwnd As Long, ByVal s As Long, ByVal wSize As Integer) As Boolean
  400.    capCaptureSetSetup = SendMessage(lwnd, WM_CAP_SET_SEQUENCE_SETUP, wSize, s)
  401. End Function
  402. Function capSetMCIDeviceName(ByVal lwnd As Long, ByVal szName As Long) As Boolean
  403.    capSetMCIDeviceName = SendMessage(lwnd, WM_CAP_SET_MCI_DEVICE, 0, szName)
  404. End Function
  405. Function capGetMCIDeviceName(ByVal lwnd As Long, ByVal szName As Long, ByVal wSize As Integer) As Boolean
  406.    capGetMCIDeviceName = SendMessage(lwnd, WM_CAP_GET_MCI_DEVICE, wSize, szName)
  407. End Function
  408. Function capPaletteOpen(ByVal lwnd As Long, ByVal szName As Long) As Boolean
  409.    capPaletteOpen = SendMessage(lwnd, WM_CAP_PAL_OPEN, 0, szName)
  410. End Function
  411. Function capPaletteSave(ByVal lwnd As Long, ByVal szName As Long) As Boolean
  412.    capPaletteSave = SendMessage(lwnd, WM_CAP_PAL_SAVE, 0, szName)
  413. End Function
  414. Function capPalettePaste(ByVal lwnd As Long) As Boolean
  415.    capPalettePaste = SendMessage(lwnd, WM_CAP_PAL_PASTE, 0, 0)
  416. End Function
  417. Function capPaletteAuto(ByVal lwnd As Long, ByVal iFrames As Integer, ByVal iColor As Long) As Boolean
  418.    capPaletteAuto = SendMessage(lwnd, WM_CAP_PAL_AUTOCREATE, iFrames, iColors)
  419. End Function
  420. Function capPaletteManual(ByVal lwnd As Long, ByVal fGrab As Boolean, ByVal iColors As Long) As Boolean
  421.    capPaletteManual = SendMessage(lwnd, WM_CAP_PAL_MANUALCREATE, fGrab, iColors)
  422. End Function
  423.  
  424.