www.pudn.com > AMCap_example.rar > amcap.h


//------------------------------------------------------------------------------ 
// File: AMCap.h 
// 
// Desc: DirectShow sample code - audio/video capture. 
// 
// Copyright (c) Microsoft Corporation.  All rights reserved. 
//------------------------------------------------------------------------------ 
 
 
// Macros 
#define SAFE_RELEASE(x) { if (x) x->Release(); x = NULL; } 
 
 
// device notification definitions 
#if (WINVER < 0x0500) 
 
#define DBT_DEVTYP_DEVICEINTERFACE      0x00000005  // device interface class 
#define DEVICE_NOTIFY_WINDOW_HANDLE     0x00000000 
 
typedef PVOID   HDEVNOTIFY; 
 
#endif 
 
extern "C" 
{ 
    typedef BOOL (/* WINUSERAPI */ WINAPI *PUnregisterDeviceNotification)( 
        IN HDEVNOTIFY Handle 
        ); 
 
    typedef HDEVNOTIFY (/* WINUSERAPI */ WINAPI *PRegisterDeviceNotificationA)( 
        IN HANDLE hRecipient, 
        IN LPVOID NotificationFilter, 
        IN DWORD Flags 
        ); 
 
    typedef HDEVNOTIFY (/* WINUSERAPI */ WINAPI *PRegisterDeviceNotificationW)( 
        IN HANDLE hRecipient, 
        IN LPVOID NotificationFilter, 
        IN DWORD Flags 
        ); 
} 
 
#ifdef UNICODE 
#define PRegisterDeviceNotification  PRegisterDeviceNotificationW 
#else 
#define PRegisterDeviceNotification  PRegisterDeviceNotificationA 
#endif // !UNICODE 
 
#if (WINVER < 0x0500) 
 
typedef struct _DEV_BROADCAST_DEVICEINTERFACE_A { 
    DWORD       dbcc_size; 
    DWORD       dbcc_devicetype; 
    DWORD       dbcc_reserved; 
    GUID        dbcc_classguid; 
    char        dbcc_name[1]; 
} DEV_BROADCAST_DEVICEINTERFACE_A, *PDEV_BROADCAST_DEVICEINTERFACE_A; 
 
typedef struct _DEV_BROADCAST_DEVICEINTERFACE_W { 
    DWORD       dbcc_size; 
    DWORD       dbcc_devicetype; 
    DWORD       dbcc_reserved; 
    GUID        dbcc_classguid; 
    wchar_t     dbcc_name[1]; 
} DEV_BROADCAST_DEVICEINTERFACE_W, *PDEV_BROADCAST_DEVICEINTERFACE_W; 
 
#ifdef UNICODE 
typedef DEV_BROADCAST_DEVICEINTERFACE_W   DEV_BROADCAST_DEVICEINTERFACE; 
typedef PDEV_BROADCAST_DEVICEINTERFACE_W  PDEV_BROADCAST_DEVICEINTERFACE; 
#else 
typedef DEV_BROADCAST_DEVICEINTERFACE_A   DEV_BROADCAST_DEVICEINTERFACE; 
typedef PDEV_BROADCAST_DEVICEINTERFACE_A  PDEV_BROADCAST_DEVICEINTERFACE; 
#endif // UNICODE 
#endif // WINVER 
 
 
// 
// Resource constants 
// 
#define ID_APP      1000 
 
/* Menu Items */ 
#define MENU_EXIT           4 
#define MENU_SET_CAP_FILE   5 
#define MENU_ALLOC_CAP_FILE 6 
#define MENU_START_CAP      7 
#define MENU_STOP_CAP       8 
#define MENU_CAP_CC         9 
#define MENU_CAP_AUDIO      12 
#define MENU_AUDIOFORMAT    13 
#define MENU_FRAMERATE      14 
#define MENU_PREVIEW        15 
#define MENU_VDEVICE0       16 
#define MENU_VDEVICE1       17 
#define MENU_VDEVICE2       18 
#define MENU_VDEVICE3       19 
#define MENU_VDEVICE4       20 
#define MENU_VDEVICE5       21 
#define MENU_VDEVICE6       22 
#define MENU_VDEVICE7       23 
#define MENU_VDEVICE8       24 
#define MENU_VDEVICE9       25 
#define MENU_ADEVICE0       26 
#define MENU_ADEVICE1       27 
#define MENU_ADEVICE2       28 
#define MENU_ADEVICE3       29 
#define MENU_ADEVICE4       30 
#define MENU_ADEVICE5       31 
#define MENU_ADEVICE6       32 
#define MENU_ADEVICE7       33 
#define MENU_ADEVICE8       34 
#define MENU_ADEVICE9       35 
#define MENU_ABOUT          36 
#define MENU_SAVE_CAP_FILE  37 
#define MENU_NOMASTER       38 
#define MENU_AUDIOMASTER    39 
#define MENU_VIDEOMASTER    40 
#define MENU_TIMELIMIT      41 
#define MENU_DIALOG0        42 
#define MENU_DIALOG1        43 
#define MENU_DIALOG2        44 
#define MENU_DIALOG3        45 
#define MENU_DIALOG4        46 
#define MENU_DIALOG5        47 
#define MENU_DIALOG6        48 
#define MENU_DIALOG7        49 
#define MENU_DIALOG8        50 
#define MENU_DIALOG9        51 
#define MENU_DIALOGA        52 
#define MENU_DIALOGB        53 
#define MENU_DIALOGC        54 
#define MENU_DIALOGD        55 
#define MENU_DIALOGE        56 
#define MENU_DIALOGF        57 
#define MENU_MPEG2          58  // !!! more? 
 
 
// Dialogs 
#define IDD_ABOUT               600 
#define IDD_AllocCapFileSpace   601 
#define IDD_FrameRateDialog     602 
#define IDD_PressAKeyDialog     603 
#define IDD_TimeLimitDialog     604 
 
// defines for dialogs 
#define IDD_SetCapFileFree      400 
#define IDD_SetCapFileSize      401 
#define IDC_FRAMERATE           402 
#define IDC_CAPFILENAME         403 
#define IDC_TIMELIMIT           404 
#define IDC_USETIMELIMIT        405 
#define IDC_USEFRAMERATE        406 
 
// window messages 
#define WM_FGNOTIFY WM_USER+1