/* ** -- HEADER PROLOG -- ***********************************************
 
 Ultimedia System Facilities/400  COPYRIGHT (C) IBM Corporation 1993
          LICENSED MATERIAL-PROGRAM PROPERTY OF IBM
//                                                    *** Keyword *** '%n'
 'fzzmaapi.H'
 
 DESCRIPTION:
 ------------
             This head file contains the flags and error codes used in
             the MMAPI component.
 
//  Change History:                                   *** Revision History ***
//                                                    *** Revision History ***
 
** -- HEADER PROLOG END -- ******************************************* */
 
/* All USF/400 structures are aligned on 1 byte boundaries.  This pragma */
/*   specifies this alignment. */
#pragma pack(1)
 
/* Valid flags for the bAsychFlag parameter */
#define FZZM_SYNC                 0x0001
#define FZZM_ASYNC                0x0002
 
/* Valid flags for the usControlFlag parameter */
#define FZZM_HOLD               0x0001
#define FZZM_START_IMMEDIATE    0x0002
#define FZZM_EXIT_ON_COMPLETION 0x1000
#define FZZM_LIVE_VIEW          0x2000
#define FZZM_STAGE_REPO_OBJS    0x4000
 
/* Valid flags for the usEUIFlag parameter */
#define FZZM_CTL_PANEL          0x0001
#define FZZM_NO_CTL_PANEL       0x0002
#define FZZM_NO_SYS_MENU        0x0100
#define FZZM_NO_MIN_BUTTON      0x0200
#define FZZM_NO_MAX_BUTTON      0x0400
#define FZZM_NON_SIZABLE_BORDER 0x0800
#define FZZM_NO_WINCAPTION      0x1000
#define FZZM_API_RETAINS_FOCUS  0x2000
#define FZZM_APP_RETAINS_FOCUS  0x4000
 
/* Valid flags for ProcessType flag in return structure */
#define FZZM_USF_NATIVE         0x0001
#define FZZM_USF_EXTERNAL       0x0002
 
/* Valid flags for ulControlId on QumbControlProcess and fzzmControlProcess APIs */
#define FZZM_END_API             1
#define FZZM_PLAY                2
#define FZZM_RECORD              3
#define FZZM_PAUSE               4
#define FZZM_RESUME              5
#define FZZM_MONITOR             6
#define FZZM_CAPTURE             7
#define FZZM_STOP                8
#define FZZM_SAVE                9
#define FZZM_TRACK_ADVANCE       12
#define FZZM_TRACK_REVERSE       13
#define FZZM_HIDE                14
#define FZZM_SHOW                15
#define FZZM_CHANGE_OBJECT       16
 
/* Valid flags for ulNotifyFlags field on QumbNotifyObjectSelection and fzzmNotifyObjectSelection APIs */
#define FZZM_LEFT_BTN_CLICK            0x01
#define FZZM_LEFT_BTN_DBL_CLICK        0x02
#define FZZM_MIDDLE_BTN_CLICK          0x04
#define FZZM_MIDDLE_BTN_DBL_CLICK      0x08
#define FZZM_RIGHT_BTN_CLICK           0x10
#define FZZM_RIGHT_BTN_DBL_CLICK       0x20
 
/* Maximum sizes for MMAPI parameter fields */
#define FZZM_MAX_SIZE_WIN_TITLE  40
 
/* Possible return status messages from MMAPI */
#define FZZM_MSG_COMPLETE    1            /* API has completed playing the specified object */
#define FZZM_MSG_EXIT        2            /* API is no longer active */
 
/* Multimedia Message usMsgIndicator field valus */
#define FZZM_STATUS_MSG                     1   /* status msg */
#define FZZM_OBJECT_SELECTION_MSG           2   /* notification msg */
 
/* Structure to hold all of the parameters returned from */
/* fzzmRtvMultimediaMessage() API call                   */
typedef struct _FZZMMULTIMEDIAMESSAGERTN {
   USHORT   usSize;
   FZZMRID  AsyncID;
   ULONG    ulMsgIndicator;   /* indicates type of msg this represents   */
   ULONG    ulStatusMsg;      /* valid only on FZZM_STATUS_MSG           */
   ULONG    ulErrorCode;      /* valid only on FZZM_STATUS_MSG           */
   ULONG    ulNotifyFlag;     /* valid only on FZZM_OBJECT_SELECTION_MSG */
} FZZMMULTIMEDIAMESSAGERTN, FAR *PFZZMMULTIMEDIAMESSAGERTN;
 
/* Structure to hold all of the parameters passed into the PresentObject() call */
typedef struct _FZZMPRESOBJ {
   USHORT       usSize;
   FZZMCONV     convUSFConvID;
   CHAR         szObjectID[FZZM_ATTRLEN_OBJID+1];
   USHORT       usAsyncFlag;
   USHORT       usControlFlag;
   USHORT       usEUIFlag;
   CHAR         szWindowTitle[FZZM_MAX_SIZE_WIN_TITLE+1];
   HWND         hwndParent;
   HWND         hwndMessage;
   USHORT       usMessageID;
   USHORT       usSADCPWSTargetDeviceID;
   USHORT       usSADCAS400SourceDeviceID;
   USHORT       usSADCAS400TargetDeviceID;
} FZZMPRESOBJ, FAR *PFZZMPRESOBJ;
 
 
/* Structure to hold all of the parameters passed into the PresentObject() call */
/* including initial position and size fields */
typedef struct _FZZMPRESOBJ2 {
   USHORT       usSize;
   FZZMCONV     convUSFConvID;
   CHAR         szObjectID[FZZM_ATTRLEN_OBJID+1];
   USHORT       usAsyncFlag;
   USHORT       usControlFlag;
   USHORT       usEUIFlag;
   CHAR         szWindowTitle[FZZM_MAX_SIZE_WIN_TITLE+1];
   HWND         hwndParent;
   HWND         hwndMessage;
   USHORT       usMessageID;
   USHORT       usSADCPWSTargetDeviceID;
   USHORT       usSADCAS400SourceDeviceID;
   USHORT       usSADCAS400TargetDeviceID;
   LONG         lXOrigin;
   LONG         lYOrigin;
   LONG         lWidth;
   LONG         lHeight;
} FZZMPRESOBJ2, FAR *PFZZMPRESOBJ2;
 
/* Structure to hold all of the parameters returned from the PresentObject() call */
typedef struct _FZZMPRESOBJRTN {
   USHORT       usSize;
   FZZMRID      AsyncID;
   USHORT       usProcessType;
   USHORT       usSADCPWSTargetDeviceID;
   USHORT       usSADCAS400SourceDeviceID;
   USHORT       usSADCAS400TargetDeviceID;
}  FZZMPRESOBJRTN, FAR *PFZZMPRESOBJRTN;
 
 
/* Structure to hold all of the parameters passed into the PresentFile() call */
typedef struct _FZZMPRESFILE {
   USHORT       usSize;
   FZZMCONV     convUSFConvID;
   CHAR         szPathAndFileName[FZZM_MAX_PATH+1];
   USHORT       usAsyncFlag;
   USHORT       usControlFlag;
   USHORT       usEUIFlag;
   CHAR         szWindowTitle[FZZM_MAX_SIZE_WIN_TITLE+1];
   HWND         hwndParent;
   HWND         hwndMessage;
   USHORT       usMessageID;
} FZZMPRESFILE, FAR *PFZZMPRESFILE;
 
/* Structure to hold all of the parameters passed into the PresentFile() call */
/* including initial position and size fields */
typedef struct _FZZMPRESFILE2 {
   USHORT       usSize;
   FZZMCONV     convUSFConvID;
   CHAR         szPathAndFileName[FZZM_MAX_PATH+1];
   USHORT       usAsyncFlag;
   USHORT       usControlFlag;
   USHORT       usEUIFlag;
   CHAR         szWindowTitle[FZZM_MAX_SIZE_WIN_TITLE+1];
   HWND         hwndParent;
   HWND         hwndMessage;
   USHORT       usMessageID;
   LONG         lXOrigin;
   LONG         lYOrigin;
   LONG         lWidth;
   LONG         lHeight;
} FZZMPRESFILE2, FAR *PFZZMPRESFILE2;
 
/* Structure to hold all of the parameters returned from the PresentFile() call */
typedef struct _FZZMPRESFILERTN {
   USHORT       usSize;
   FZZMRID      AsyncID;
   USHORT       usProcessType;
}  FZZMPRESFILERTN, FAR *PFZZMPRESFILERTN;
 
/* Structure to hold all of the parameters passed into the CaptureObject() call */
typedef struct _FZZMCAPTOBJ {
   USHORT       usSize;
   FZZMCONV     convUSFConvID;
   CHAR         szObjectID[FZZM_ATTRLEN_OBJID+1];
   USHORT       usAsyncFlag;
   USHORT       usControlFlag;
   USHORT       usEUIFlag;
   CHAR         szWindowTitle[FZZM_MAX_SIZE_WIN_TITLE+1];
   HWND         hwndParent;
   HWND         hwndMessage;
   USHORT       usMessageID;
   USHORT       usSADCPWSTargetDeviceID;
   USHORT       usReserved1;
   USHORT       usReserved2;
} FZZMCAPTOBJ, FAR *PFZZMCAPTOBJ;
 
/* Structure to hold all of the parameters passed into the CaptureObject() call */
/* including initial position and size fields */
typedef struct _FZZMCAPTOBJ2 {
   USHORT       usSize;
   FZZMCONV     convUSFConvID;
   CHAR         szObjectID[FZZM_ATTRLEN_OBJID+1];
   USHORT       usAsyncFlag;
   USHORT       usControlFlag;
   USHORT       usEUIFlag;
   CHAR         szWindowTitle[FZZM_MAX_SIZE_WIN_TITLE+1];
   HWND         hwndParent;
   HWND         hwndMessage;
   USHORT       usMessageID;
   USHORT       usSADCPWSTargetDeviceID;
   USHORT       usReserved1;
   USHORT       usReserved2;
   LONG         lXOrigin;
   LONG         lYOrigin;
   LONG         lWidth;
   LONG         lHeight;
} FZZMCAPTOBJ2, FAR *PFZZMCAPTOBJ2;
 
/* Structure to hold all of the parameters returned from the CaptureObject() call */
typedef struct _FZZMCAPTOBJRTN {
   USHORT       usSize;
   FZZMRID      AsyncID;
   USHORT       usProcessType;
   USHORT       usReserved1;
   USHORT       usReserved2;
   USHORT       usReserved3;
}  FZZMCAPTOBJRTN, FAR *PFZZMCAPTOBJRTN;
 
USHORT USFENTRY fzzmPresentObject(PVOID           pFZZMPresObj2,
                                  PFZZMPRESOBJRTN pFZZMPresObjRtn);
 
USHORT USFENTRY fzzmPresentFile(PVOID            pFZZMPresFile2,
                                PFZZMPRESFILERTN pFZZMPresFileRtn);
 
USHORT USFENTRY fzzmControlProcess(PFZZMRID  pAsyncID,
                                   ULONG     ulControlId,
                                   PSZ       pszNewObjectID);
 
USHORT USFENTRY fzzmQryWinPositionAndSize(PFZZMRID pAsyncID,
                                          PLONG    plXOrigin,
                                          PLONG    plYOrigin,
                                          PLONG    plWidth,
                                          PLONG    plHeight);
 
USHORT USFENTRY fzzmSetWinPositionAndSize(PFZZMRID pAsyncID,
                                          LONG     lXOrigin,
                                          LONG     lYOrigin,
                                          LONG     lWidth,
                                          LONG     lHeight);
 
USHORT USFENTRY fzzmCaptureObject(PVOID           pFZZMCaptObj2,
                                  PFZZMCAPTOBJRTN pFZZMCaptObjRtn);
 
USHORT USFENTRY fzzmObjectSelection(PFZZMRID  pAsyncID,
                                    BOOL      bNotifyEnabled,
                                    ULONG     ulNotifyFlags,
                                    HWND      hwndNotifyWindow,
                                    USHORT    usNotifyMsgID);
 
USHORT USFENTRY fzzmRtvMultimediaMessage(ULONG  ulMsgHandle,
                                         PFZZMMULTIMEDIAMESSAGERTN pFZZMMultimediaMessageRtn);
 
USHORT USFENTRY fzzmCreateThumbnail(FZZMCONV convUSFConvID,
                                    PSZ pszSourceObjectID,
                                    PSZ pszTargetObjectID);
 
/* Return the structure alignment to the default setting */
#pragma pack()
