****************************************************************************
* *
* Translated from avicap.h *
* *
* Main include file. *
* *
* Microsoft Video for Windows Sample Capture Class *
* *
* *
* C/C++ Run Time Library - Version 8.0 *
* *
* Copyright (c) 1994, 1997 by Borland International *
* All Rights Reserved. *
* *
* *
****************************************************************************
capCaptureAbort -
capCaptureGetSetup -
capCaptureSequence -
capCaptureSequenceNoFile -
capCaptureSetSetup -
capCaptureSingleFrame -
capCaptureSingleFrameClose -
capCaptureSingleFrameOpen -
capCaptureStop -
capCreateCaptureWindowA -
capDlgVideoCompression -
capDlgVideoDisplay -
capDlgVideoFormat -
capDlgVideoSource -
capDriverConnect -
capDriverDisconnect -
capDriverGetCaps -
capDriverGetName -
capDriverGetVersion -
capEditCopy -
capFileAlloc -
capFileGetCaptureFile -
capFileSaveAs -
capFileSaveDIB -
capFileSetCaptureFile -
capFileSetInfoChunk -
capGetAudioFormat -
capGetAudioFormatSize -
capGetDriverDescriptionA -
capGetMCIDeviceName -
capGetStatus -
capGetUserData -
capGetVideoFormat -
capGetVideoFormatSize -
capGrabFrame -
capGrabFrameNoStop -
capOverlay -
capPaletteAuto -
capPaletteManual -
capPaletteOpen -
capPalettePaste -
capPaletteSave -
capPreview -
capPreviewRate -
capPreviewScale -
capSetAudioFormat -
capSetCallbackOnCapControl -
capSetCallbackOnError -
capSetCallbackOnFrame -
capSetCallbackOnStatus -
capSetCallbackOnVideoStream -
capSetCallbackOnWaveStream -
capSetCallbackOnYield -
capSetMCIDeviceName -
capSetScrollPos -
capSetUserData -
capSetVideoFormat -
mmioFOURCC - * Now capturing */ ------------------------------------------------------------------ New Information chunk IDs ------------------------------------------------------------------ DIGITIZATION_TIME = mmioFOURCC ('I','D','I','T'); infotypeSMPTE_TIME mmioFOURCC ('I','S','M','P') ------------------------------------------------------------------ String IDs from status and error callbacks ------------------------------------------------------------------
IDS_CAP_BEGIN 300 /* "Capture Start" */
IDS_CAP_END 301 /* "Capture End" */
IDS_CAP_INFO 401 /* "%s" */
IDS_CAP_OUTOFMEM 402 /* "Out of memory" */
IDS_CAP_FILEEXISTS 403 /* "File '%s' exists -- overwrite it?" */
IDS_CAP_ERRORPALOPEN 404 /* "Error opening palette '%s'" */
IDS_CAP_ERRORPALSAVE 405 /* "Error saving palette '%s'" */
IDS_CAP_ERRORDIBSAVE 406 /* "Error saving frame '%s'" */
IDS_CAP_DEFAVIEXT 407 /* "avi" */
IDS_CAP_DEFPALEXT 408 /* "pal" */
IDS_CAP_CANTOPEN 409 /* "Cannot open '%s'" */
IDS_CAP_SEQ_MSGSTART 410 /* "Select OK to start capture\nof video sequence\nto %s.
FOURCC
TByteRec
TCapDriverCaps
TCapInfoChunk
TCapStatus
TCaptureParms
TWordRec
avicap32
CONTROLCALLBACK_CAPTURING
CONTROLCALLBACK_PREROLL
WM_CAP_ABORT
WM_CAP_DLG_VIDEOCOMPRESSION
WM_CAP_DLG_VIDEODISPLAY
WM_CAP_DLG_VIDEOFORMAT
WM_CAP_DLG_VIDEOSOURCE
WM_CAP_DRIVER_CONNECT
WM_CAP_DRIVER_DISCONNECT
WM_CAP_DRIVER_GET_CAPS
WM_CAP_DRIVER_GET_NAME
WM_CAP_DRIVER_GET_VERSION
WM_CAP_EDIT_COPY
WM_CAP_END
WM_CAP_FILE_ALLOCATE
WM_CAP_FILE_GET_CAPTURE_FILE
WM_CAP_FILE_SAVEAS
WM_CAP_FILE_SAVEDIB
WM_CAP_FILE_SET_CAPTURE_FILE
WM_CAP_FILE_SET_INFOCHUNK
WM_CAP_GET_AUDIOFORMAT
WM_CAP_GET_CAPSTREAMPTR
WM_CAP_GET_MCI_DEVICE
WM_CAP_GET_SEQUENCE_SETUP
WM_CAP_GET_STATUS
WM_CAP_GET_USER_DATA
WM_CAP_GET_VIDEOFORMAT
WM_CAP_GRAB_FRAME
WM_CAP_GRAB_FRAME_NOSTOP
WM_CAP_PAL_AUTOCREATE
WM_CAP_PAL_MANUALCREATE
WM_CAP_PAL_OPEN
WM_CAP_PAL_PASTE
WM_CAP_PAL_SAVE
WM_CAP_SEQUENCE
WM_CAP_SEQUENCE_NOFILE
WM_CAP_SET_AUDIOFORMAT
WM_CAP_SET_CALLBACK_CAPCONTROL
WM_CAP_SET_CALLBACK_ERROR
WM_CAP_SET_CALLBACK_FRAME
WM_CAP_SET_CALLBACK_STATUS
WM_CAP_SET_CALLBACK_VIDEOSTREAM
WM_CAP_SET_CALLBACK_WAVESTREAM
WM_CAP_SET_CALLBACK_YIELD
WM_CAP_SET_MCI_DEVICE
WM_CAP_SET_OVERLAY
WM_CAP_SET_PREVIEW
WM_CAP_SET_PREVIEWRATE
WM_CAP_SET_SCALE
WM_CAP_SET_SCROLL
WM_CAP_SET_SEQUENCE_SETUP
WM_CAP_SET_USER_DATA
WM_CAP_SET_VIDEOFORMAT
WM_CAP_SINGLE_FRAME
WM_CAP_SINGLE_FRAME_CLOSE
WM_CAP_SINGLE_FRAME_OPEN
WM_CAP_START
WM_CAP_STOP
WM_CAP_UNICODE_START
procedure capCaptureAbort(hCapWnd:hwnd);
procedure capCaptureGetSetup(hCapWnd:hwnd; s:WPARAM; wSize:LPARAM);
procedure capCaptureSequence(hCapWnd:hwnd);
procedure capCaptureSequenceNoFile(hCapWnd:hwnd);
procedure capCaptureSetSetup(hCapWnd:hwnd; s:WPARAM; wSize:LPARAM);
procedure capCaptureSingleFrame(hCapWnd:hwnd);
procedure capCaptureSingleFrameClose(hCapWnd:hwnd);
procedure capCaptureSingleFrameOpen(hCapWnd:hwnd);
procedure capCaptureStop(hCapWnd:hwnd);
function capCreateCaptureWindowA (
lpszWindowName:PChar;
dwStyle:DWORD;
x,y,nWidth,nHeight:Integer;
hwndParent:HWnd;nID:Integer):hwnd;
procedure capDlgVideoCompression(hCapWnd:hwnd);
procedure capDlgVideoDisplay(hCapWnd:hwnd);
procedure capDlgVideoFormat(hCapWnd:hwnd);
procedure capDlgVideoSource(hCapWnd:hwnd);
function capDriverConnect(hCapWnd:hwnd; i:wParam):Boolean;
procedure capDriverDisconnect(hCapWnd:hwnd);
procedure capDriverGetCaps(hCapWnd:hwnd; s:wParam; wSize:LParam);
procedure capDriverGetName(hCapWnd:hwnd; szName:wParam; wSize:LParam);
procedure capDriverGetVersion(hCapWnd:hwnd; szVer:wParam; wSize:LParam);
procedure capEditCopy(hCapWnd:hwnd);
procedure capFileAlloc(hCapWnd:hwnd; dwSize :LPARAM);
procedure capFileGetCaptureFile(hCapWnd:hwnd; szName :wPARAM; wSize :lPARAM);
procedure capFileSaveAs(hCapWnd:hwnd; szName :LPARAM);
procedure capFileSaveDIB(hCapWnd:hwnd; szName :LPARAM);
procedure capFileSetCaptureFile(hCapWnd:hwnd; szName :LPARAM);
procedure capFileSetInfoChunk(hCapWnd:hwnd; lpInfoChunk :LPARAM);
procedure capGetAudioFormat(hCapWnd:hwnd; s :WPARAM; wSize :LPARAM);
procedure capGetAudioFormatSize(hCapWnd:hwnd);
function capGetDriverDescriptionA (
wDriverIndex:UINT;
lpszName:PChar;cbName:Integer;
lpszVer:PChar;cbVer:Integer):Boolean;
procedure capGetMCIDeviceName(hCapWnd:hwnd; szName:LPARAM; wSize:WPARAM);
procedure capGetStatus(hCapWnd:hwnd; s:WPARAM; wSize:LPARAM);
procedure capGetUserData(hCapWnd:hwnd);
procedure capGetVideoFormat(hCapWnd:hwnd; s:WPARAM; wSize:LPARAM);
procedure capGetVideoFormatSize(hCapWnd:hwnd);
procedure capGrabFrame(hCapWnd:hwnd);
procedure capGrabFrameNoStop(hCapWnd:hwnd);
procedure capOverlay(hCapWnd:hwnd; f :WPARAM);
procedure capPaletteAuto(hCapWnd:hwnd; iFrames:WPARAM; iColors :LPARAM);
procedure capPaletteManual(hCapWnd:hwnd; fGrab :WPARAM; iColors :LPARAM);
procedure capPaletteOpen(hCapWnd:hwnd; szName:LPARAM);
procedure capPalettePaste(hCapWnd:hwnd);
procedure capPaletteSave(hCapWnd:hwnd; szName:LPARAM);
procedure capPreview(hCapWnd:hwnd; f :WPARAM);
procedure capPreviewRate(hCapWnd:hwnd; wMS :WPARAM);
procedure capPreviewScale(hCapWnd:hwnd; f :WPARAM);
procedure capSetAudioFormat(hCapWnd:hwnd; s :WPARAM; wSize :LPARAM);
procedure capSetCallbackOnCapControl(hCapWnd:hwnd; fpProc:LParam);
procedure capSetCallbackOnError(hCapWnd:hwnd; fpProc:Lparam);
procedure capSetCallbackOnFrame(hCapWnd:hwnd; fpProc:LParam);
procedure capSetCallbackOnStatus(hCapWnd:hwnd; fpProc:LParam);
procedure capSetCallbackOnVideoStream(hCapWnd:hwnd; fpProc:LParam);
procedure capSetCallbackOnWaveStream(hCapWnd:hwnd; fpProc:LParam);
procedure capSetCallbackOnYield(hCapWnd:hwnd; fpProc:LParam);
procedure capSetMCIDeviceName(hCapWnd:hwnd; szName:LPARAM);
procedure capSetScrollPos(hCapWnd:hwnd; lpP :LPARAM);
procedure capSetUserData(hCapWnd:hwnd;lUser:LParam);
procedure capSetVideoFormat(hCapWnd:hwnd; s:WPARAM; wSize:LPARAM);
function mmioFOURCC(const c0,c1,c2,c3:Char):FOURCC;
* Now capturing */ ------------------------------------------------------------------ New Information chunk IDs ------------------------------------------------------------------ DIGITIZATION_TIME = mmioFOURCC ('I','D','I','T'); infotypeSMPTE_TIME mmioFOURCC ('I','S','M','P') ------------------------------------------------------------------ String IDs from status and error callbacks ------------------------------------------------------------------
IDS_CAP_BEGIN 300 /* "Capture Start" */
IDS_CAP_END 301 /* "Capture End" */
IDS_CAP_INFO 401 /* "%s" */
IDS_CAP_OUTOFMEM 402 /* "Out of memory" */
IDS_CAP_FILEEXISTS 403 /* "File '%s' exists -- overwrite it?" */
IDS_CAP_ERRORPALOPEN 404 /* "Error opening palette '%s'" */
IDS_CAP_ERRORPALSAVE 405 /* "Error saving palette '%s'" */
IDS_CAP_ERRORDIBSAVE 406 /* "Error saving frame '%s'" */
IDS_CAP_DEFAVIEXT 407 /* "avi" */
IDS_CAP_DEFPALEXT 408 /* "pal" */
IDS_CAP_CANTOPEN 409 /* "Cannot open '%s'" */
IDS_CAP_SEQ_MSGSTART 410 /* "Select OK to start capture\nof video sequence\nto %s." */
IDS_CAP_SEQ_MSGSTOP 411 /* "Hit ESCAPE or click to end capture" */
IDS_CAP_VIDEDITERR 412 /* "An error occurred while trying to run VidEdit." */
IDS_CAP_READONLYFILE 413 /* "The file '%s' is a read-only file." */
IDS_CAP_WRITEERROR 414 /* "Unable to write to file '%s'.\nDisk may be full." */
IDS_CAP_NODISKSPACE 415 /* "There is no space to create a capture file on the specified device." */
IDS_CAP_SETFILESIZE 416 /* "Set File Size" */
IDS_CAP_SAVEASPERCENT 417 /* "SaveAs: %2ld%% Hit Escape to abort." */
IDS_CAP_DRIVER_ERROR 418 /* Driver specific error message */
IDS_CAP_WAVE_OPEN_ERROR 419 /* "Error: Cannot open the wave input device.\nCheck sample size, frequency, and channels." */
IDS_CAP_WAVE_ALLOC_ERROR 420 /* "Error: Out of memory for wave buffers." */
IDS_CAP_WAVE_PREPARE_ERROR 421 /* "Error: Cannot prepare wave buffers." */
IDS_CAP_WAVE_ADD_ERROR 422 /* "Error: Cannot add wave buffers." */
IDS_CAP_WAVE_SIZE_ERROR 423 /* "Error: Bad wave size." */
IDS_CAP_VIDEO_OPEN_ERROR 424 /* "Error: Cannot open the video input device." */
IDS_CAP_VIDEO_ALLOC_ERROR 425 /* "Error: Out of memory for video buffers." */
IDS_CAP_VIDEO_PREPARE_ERROR 426 /* "Error: Cannot prepare video buffers." */
IDS_CAP_VIDEO_ADD_ERROR 427 /* "Error: Cannot add video buffers." */
IDS_CAP_VIDEO_SIZE_ERROR 428 /* "Error: Bad video size." */
IDS_CAP_FILE_OPEN_ERROR 429 /* "Error: Cannot open capture file." */
IDS_CAP_FILE_WRITE_ERROR 430 /* "Error: Cannot write to capture file. Disk may be full." */
IDS_CAP_RECORDING_ERROR 431 /* "Error: Cannot write to capture file. Data rate too high or disk full." */
IDS_CAP_RECORDING_ERROR2 432 /* "Error while recording" */
IDS_CAP_AVI_INIT_ERROR 433 /* "Error: Unable to initialize for capture." */
IDS_CAP_NO_FRAME_CAP_ERROR 434 /* "Warning: No frames captured.\nConfirm that vertical sync interrupts\nare configured and enabled." */
IDS_CAP_NO_PALETTE_WARN 435 /* "Warning: Using default palette." */
IDS_CAP_MCI_CONTROL_ERROR 436 /* "Error: Unable to access MCI device." */
IDS_CAP_MCI_CANT_STEP_ERROR 437 /* "Error: Unable to step MCI device." */
IDS_CAP_NO_AUDIO_CAP_ERROR 438 /* "Error: No audio data captured.\nCheck audio card settings." */
IDS_CAP_AVI_DRAWDIB_ERROR 439 /* "Error: Unable to draw this data format." */
IDS_CAP_COMPRESSOR_ERROR 440 /* "Error: Unable to initialize compressor." */
IDS_CAP_AUDIO_DROP_ERROR 441 /* "Error: Audio data was lost during capture, reduce capture rate." */
/* status string IDs */
IDS_CAP_STAT_LIVE_MODE 500 /* "Live window" */
IDS_CAP_STAT_OVERLAY_MODE 501 /* "Overlay window" */
IDS_CAP_STAT_CAP_INIT 502 /* "Setting up for capture - Please wait" */
IDS_CAP_STAT_CAP_FINI 503 /* "Finished capture, now writing frame %ld" */
IDS_CAP_STAT_PALETTE_BUILD 504 /* "Building palette map" */
IDS_CAP_STAT_OPTPAL_BUILD 505 /* "Computing optimal palette" */
IDS_CAP_STAT_I_FRAMES 506 /* "%d frames" */
IDS_CAP_STAT_L_FRAMES 507 /* "%ld frames" */
IDS_CAP_STAT_CAP_L_FRAMES 508 /* "Captured %ld frames" */
IDS_CAP_STAT_CAP_AUDIO 509 /* "Capturing audio" */
IDS_CAP_STAT_VIDEOCURRENT 510 /* "Captured %ld frames (%ld dropped); //%d.%03d sec." */
IDS_CAP_STAT_VIDEOAUDIO 511 /* "Captured %d.%03d sec. %ld frames (%ld dropped); //(%d.%03d fps). %ld audio bytes (%d,%03d sps)" */
IDS_CAP_STAT_VIDEOONLY 512 /* "Captured %d.%03d sec. %ld frames (%ld dropped); //(%d.%03d fps)" */
IDS_CAP_STAT_FRAMESDROPPED 513 /* "Dropped %ld of %ld frames (%d.%02d%%); //during capture." */
FOURCC=TWordRec
TByteRec = record
Lo : Byte;
Hi : Byte;
end;
TCapDriverCaps = record
wDeviceIndex : UINT;
fHasOverlay : BOOL;
fHasDlgVideoSource : BOOL;
fHasDlgVideoFormat : BOOL;
fHasDlgVideoDisplay : BOOL;
fCaptureInitialized : BOOL;
fDriverSuppliesPalettes : BOOL;
hVideoIn : THANDLE;
hVideoOut : THANDLE;
hVideoExtIn : THANDLE;
hVideoExtOut : THANDLE;
end;
------------------------------------------------------------------ Structures ------------------------------------------------------------------
TCapInfoChunk = record
fccInfoID : FOURCC ;
lpData : Pointer ;
cbData : LONGINT ;
end;
TCapStatus = record
uiImageWidth : UINT ;
uiImageHeight : UINT ;
fLiveWindow : BOOL ;
fOverlayWindow : BOOL ;
fScale : BOOL ;
ptScroll : TPOINT ;
fUsingDefaultPalette : BOOL ;
fAudioHardware : BOOL ;
fCapFileExists : BOOL ;
dwCurrentVideoFrame : DWORD ;
dwCurrentVideoFramesDropped : DWORD ;
dwCurrentWaveSamples : DWORD ;
dwCurrentTimeElapsedMS : DWORD ;
hPalCurrent : HPALETTE ;
fCapturingNow : BOOL ;
dwReturn : DWORD ;
wNumVideoAllocated : UINT ;
wNumAudioAllocated : UINT ;
end;
Driver Ext Out channel
TCaptureParms = record
dwRequestMicroSecPerFrame : DWORD ;
fMakeUserHitOKToCapture : BOOL ;
wPercentDropForError : UINT ;
fYield : BOOL ;
dwIndexSize : DWORD ;
wChunkGranularity : UINT ;
fUsingDOSMemory : BOOL ;
wNumVideoRequested : UINT ;
fCaptureAudio : BOOL ;
wNumAudioRequested : UINT ;
vKeyAbort : UINT ;
fAbortLeftMouse : BOOL ;
fAbortRightMouse : BOOL ;
fLimitEnabled : BOOL ;
wTimeLimit : UINT ;
fMCIControl : BOOL ;
fStepMCIDevice : BOOL ;
dwMCIStartTime : DWORD ;
dwMCIStopTime : DWORD ;
fStepCaptureAt2x : BOOL ;
wStepCaptureAverageFrames : UINT ;
dwAudioBufferSize : DWORD ;
fDisableWriteCache : BOOL ;
AVStreamMaster : DWORD;
end;
Actual number of audio buffers
TWordRec = record
Low : TByteRec;
High : TByteRec;
end;
avicap32 = 'avicap32.dll'
------------------------------------------------------------------ Window Messages WM_CAP... which can be sent to an AVICAP window ------------------------------------------------------------------ Defines start of the message range
CONTROLCALLBACK_CAPTURING = 2
* Waiting to start capture */
CONTROLCALLBACK_PREROLL = 1
------------------------------------------------------------------ CapControlCallback states ------------------------------------------------------------------
WM_CAP_ABORT = (WM_CAP_START+ 69)
WM_CAP_DLG_VIDEOCOMPRESSION = (WM_CAP_START+ 46)
WM_CAP_DLG_VIDEODISPLAY = (WM_CAP_START+ 43)
WM_CAP_DLG_VIDEOFORMAT = (WM_CAP_START+ 41)
WM_CAP_DLG_VIDEOSOURCE = (WM_CAP_START+ 42)
WM_CAP_DRIVER_CONNECT = (WM_CAP_START+ 10)
WM_CAP_DRIVER_DISCONNECT = (WM_CAP_START+ 11)
WM_CAP_DRIVER_GET_CAPS = (WM_CAP_START+ 14)
WM_CAP_DRIVER_GET_NAME = (WM_CAP_START+ 12)
WM_CAP_DRIVER_GET_VERSION = (WM_CAP_START+ 13)
WM_CAP_EDIT_COPY = (WM_CAP_START+ 30)
WM_CAP_END = WM_CAP_SET_CALLBACK_CAPCONTROL
WM_CAP_FILE_ALLOCATE = (WM_CAP_START+ 22)
out of order to save on ifdefs
WM_CAP_FILE_GET_CAPTURE_FILE = (WM_CAP_START+ 21)
WM_CAP_FILE_SAVEAS = (WM_CAP_START+ 23)
WM_CAP_FILE_SAVEDIB = (WM_CAP_START+ 25)
WM_CAP_FILE_SET_CAPTURE_FILE = (WM_CAP_START+ 20)
WM_CAP_FILE_SET_INFOCHUNK = (WM_CAP_START+ 24)
WM_CAP_GET_AUDIOFORMAT = (WM_CAP_START+ 36)
WM_CAP_GET_CAPSTREAMPTR = (WM_CAP_START+ 1)
WM_CAP_GET_MCI_DEVICE = (WM_CAP_START+ 67)
WM_CAP_GET_SEQUENCE_SETUP = (WM_CAP_START+ 65)
WM_CAP_GET_STATUS = (WM_CAP_START+ 54)
WM_CAP_GET_USER_DATA = (WM_CAP_START+ 8)
WM_CAP_GET_VIDEOFORMAT = (WM_CAP_START+ 44)
WM_CAP_GRAB_FRAME = (WM_CAP_START+ 60)
WM_CAP_GRAB_FRAME_NOSTOP = (WM_CAP_START+ 61)
WM_CAP_PAL_AUTOCREATE = (WM_CAP_START+ 83)
WM_CAP_PAL_MANUALCREATE = (WM_CAP_START+ 84)
WM_CAP_PAL_OPEN = (WM_CAP_START+ 80)
WM_CAP_PAL_PASTE = (WM_CAP_START+ 82)
WM_CAP_PAL_SAVE = (WM_CAP_START+ 81)
WM_CAP_SEQUENCE = (WM_CAP_START+ 62)
WM_CAP_SEQUENCE_NOFILE = (WM_CAP_START+ 63)
WM_CAP_SET_AUDIOFORMAT = (WM_CAP_START+ 35)
WM_CAP_SET_CALLBACK_CAPCONTROL = (WM_CAP_START+ 85)
Following added post VFW 1.1
WM_CAP_SET_CALLBACK_ERROR = (WM_CAP_START+ 2)
WM_CAP_SET_CALLBACK_FRAME = (WM_CAP_START+ 5)
WM_CAP_SET_CALLBACK_STATUS = (WM_CAP_START+ 3)
WM_CAP_SET_CALLBACK_VIDEOSTREAM = (WM_CAP_START+ 6)
WM_CAP_SET_CALLBACK_WAVESTREAM = (WM_CAP_START+ 7)
WM_CAP_SET_CALLBACK_YIELD = (WM_CAP_START+ 4)
WM_CAP_SET_MCI_DEVICE = (WM_CAP_START+ 66)
WM_CAP_SET_OVERLAY = (WM_CAP_START+ 51)
WM_CAP_SET_PREVIEW = (WM_CAP_START+ 50)
WM_CAP_SET_PREVIEWRATE = (WM_CAP_START+ 52)
WM_CAP_SET_SCALE = (WM_CAP_START+ 53)
WM_CAP_SET_SCROLL = (WM_CAP_START+ 55)
WM_CAP_SET_SEQUENCE_SETUP = (WM_CAP_START+ 64)
WM_CAP_SET_USER_DATA = (WM_CAP_START+ 9)
WM_CAP_SET_VIDEOFORMAT = (WM_CAP_START+ 45)
WM_CAP_SINGLE_FRAME = (WM_CAP_START+ 72)
WM_CAP_SINGLE_FRAME_CLOSE = (WM_CAP_START+ 71)
WM_CAP_SINGLE_FRAME_OPEN = (WM_CAP_START+ 70)
WM_CAP_START = WM_USER
WM_CAP_STOP = (WM_CAP_START+ 68)
WM_CAP_UNICODE_START = WM_USER+100
start of unicode messages