/* ** -- SOURCE PROLOG -- ***********************************************
//               Module Specifications
// **********************************************************************
//
//   Product:       Ultimedia System Facilities
//                                                    *** Keyword *** '%v'
//   Status:        [DEV|TEST|BETA|REL], Revision Number '10'
//
//   Copyright:     IBM Confidential (IBM Confidential-Restricted
//                  when Combined with the Aggregated OCO Source
//                  Modules for this Program)
//
//                  OCO Source Materials
//
//                  <PID 5763US1> (C) Copyright IBM Corporation 1993, 1994
//
// **********************************************************************
//                                                    *** Keyword *** '%n'
//  File Name:           'FZZMMODW.H'
//
//  Descriptive Name:    DIRECT MANIPULATION HEADERFILE FOR MOM - Windows
//
//  Author:              Oliver Christ
//                                                    *** Keyword *** '%f'
//  Date of last update: '13-May-94,17:07:40'
//
//  Contents List:
//
//
//  Change History:                                   *** Revision History ***
//  1 FZZMMODW.H 27-Mar-94,16:28:52,`OLIVER' MOM Drag & Drop Windows Header
//  2 FZZMMODW.H 01-Apr-94,19:26:04,`OLIVER' added structures
//  3 FZZMMODW.H 02-Apr-94,20:01:28,`OLIVER' added defines for protocol implem.
//  4 FZZMMODW.H 03-Apr-94,16:07:34,`OLIVER' fixed length of szSystemName (+1)
//  5 FZZMMODW.H 04-Apr-94,11:42:44,`OLIVER' Added cursor IDs
//  6 FZZMMODW.H 06-Apr-94,14:51:32,`OLIVER' Modified structures, added comment
//  7 FZZMMODW.H 07-Apr-94,14:43:58,`OLIVER' Added FZZM_DRAGMESSAGE define
//  8 FZZMMODW.H 22-Apr-94,10:47:04,`OLIVER' Added ptPickPos to DRAGINFO struct
//  9 FZZMMODW.H 11-May-94,13:00:36,`OLIVER' - Added FZZM_DRT_USFOBJ
//       - Added usObjectType to FZZMDRAGITEM structure for UBC
//  10 FZZMMODW.H 13-May-94,17:07:40,`OLIVER' - changed comment style
//       - fsSupportedOps -> usSupportedOps
//       - Moved defines that don't need to be externalized into the source file
//                                                    *** Revision History ***
//
// ** -- SOURCE PROLOG END -- ******************************************/
 
 
   /*-------------------------------------------------------------------------
   //
   //     NOTE:
   //       THIS HEADER FILE SHOULD BE INCLUDED AFTER "FZZMOAPI.H"
   //       SINCE IT RELIES ON THAT INCLUDE FILE'S DEFINES
   //
   //-----------------------------------------------------------------------*/
 
 
/*--------------------------------------------------------------------------
//  All USF/400 structures are aligned on 1 byte boundaries.  This pragma
//   specifies this alignment.                                            */
 
#pragma pack(1)
 
/*-------------------------------------------------------------------------*/
 
 
/*---------------------------------------------------------------------------*/
/*---- APPLICATION DEFINITIONS ----------------------------------------------*/
/*---------------------------------------------------------------------------*/
 
/*---------------------------------------------------------------------------
//
//  USF Drag & Drop Definitions
//
//-------------------------------------------------------------------------*/
 
/*  Use this define in the RegisterWindowMessage call  */
 
#define FZZM_DRAGMESSAGE "FZZMDragMessage"
 
/*  USF Drag Messages  */
 
#define FZZM_DRAGOVER        1
#define FZZM_DROP            2
#define FZZM_DRAGLEAVE       3
 
 
/*  FZZMDRAGOVER message operation response codes  */
 
#define FZZM_DO_DEFAULT      0
#define FZZM_DO_COPY         1
#define FZZM_DO_MOVE         2
#define FZZM_DO_LINK         3
 
/*  FZZMDRAGOVER message drop indicator response codes  */
 
#define FZZM_DOR_NEVERDROP       0x0000
#define FZZM_DOR_DROP            0x0001
#define FZZM_DOR_NODROPOP        0x0002
#define FZZM_DOR_NODROP          0x0003
 
 
/*  The usObjectType field in the FZZMDRAGITEM structure below will always */
/*  be assigned to the following define if the source is USF               */
 
#define FZZM_DRT_USFOBJ          0x1000
 
 
/*  Supported operation flags        */
 
#define FZZM_DO_COPYABLE         0x1000
#define FZZM_DO_MOVEABLE         0x2000
#define FZZM_DO_LINKABLE         0x4000
#define FZZM_DO_DEFAULTABLE      0x8000
 
 
 
/*---------------------------------------------------------------------------*/
/*---- STRUCTURES -----------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
 
 
/*
    The drag information, to which a pointer is passed from the source
    to the target with FZZM_DRAGOVER and FZZM_DROP messages, is structured
    as follows:
 
    Msg->lParam -->   +--------------+
                      | fzzmdragINFO |
                      +--------------+
                      | fzzmdragITEM |     1
                      +--------------+
                      | fzzmdragITEM |     2
                      +--------------+
                      |     :        |     :
                      +--------------+
                      | fzzmdragITEM |   cditem
                      +--------------+
 
*/
 
 
 
/*  Structure representing the items being dragged */
 
typedef struct _FZZMDRAGITEM
{
   ULONG  ulItemID;                         /* Pointer to item being dragged  */
   USHORT usSupportedOps;                   /* operations supported by source */
   USHORT usObjectType;                     /* Additional object type info    */
   CHAR szObjectID             [FZZM_ATTRLEN_OBJID + 1];
   CHAR szName                 [FZZM_ATTRLEN_OBJNAME + 1];
   CHAR szDescription          [FZZM_ATTRLEN_OBJDESC + 1];
   CHAR szType                 [FZZM_ATTRLEN_OBJTYPE + 1];
   CHAR szTemplateFlag         [FZZM_ATTRLEN_TEMPLATE + 1];
   CHAR szCreateDateTimeStamp  [FZZM_ATTRLEN_CRT_DATE_TIME + 1];
   CHAR szChangeDateTimeStamp  [FZZM_ATTRLEN_CHG_DATE_TIME + 1];
   CHAR szOpticalPath          [FZZM_ATTRLEN_OPTICAL_FILE_PATH + 1];
   CHAR szPCPath               [FZZM_ATTRLEN_PC_FILE_PATH + 1];
   CHAR szRepositoryPath       [FZZM_ATTRLEN_REPO_FILE_PATH + 1];
   CHAR szRemovableMediaTitle  [FZZM_ATTRLEN_RMV_MEDIA_TITLE + 1];
   CHAR szShadowObjectID       [FZZM_ATTRLEN_OBJID + 1];
   CHAR szSystemName           [FZZM_LEN_LOCATION + 1];
} FZZMDRAGITEM, FAR * PFZZMDRAGITEM;
 
 
 
/*  Header of drag information made available to target  */
 
typedef struct _FZZMDRAGINFO
{
   ULONG   ulDraginfo;       /* Size of FZZMDRAGINFO and FZZMDRAGITEMs       */
   USHORT  usOperation;      /* Current drag operation                       */
   HWND    hwndSource;       /* Window handle of source                      */
   POINT   ptDropPos;        /* Drop position                                */
   POINT   ptPickPos;        /* Pos. of mouse click on icon relative to top left corner */
   USHORT  cditem;           /* Count of FZZMDRAGITEMS                       */
   FZZMDRAGITEM FAR * pDragItem;    /* Pointer to first FZZMDRAGITEM         */
} FZZMDRAGINFO, FAR * PFZZMDRAGINFO;
 
 
 
/*-------------------------------------------------------------------------*/
/*  Return the structure alignment to the default setting                  */
 
#pragma pack()
 
/*-------------------------------------------------------------------------*/
 
 
