
# This file was generated by the SOM Compiler.
# FileName: wpobject.sc.
# Generated using:
#     SOM Precompiler spc: 1.22
#     SOM Emitter emitcsc: 1.10

/*
 *  Module Header
 * 
 *  Module Name: WPOBJECT
 * 
 *  OS/2 Presentation Manager Workplace class definitions
 * 
 *  Copyright (c) International Business Machines Corporation 1991, 1992
 * 
 */

#include <somobj.sc>

class: WPObject, 
    external stem = wpobj, local, external prefix = obj_, 
    classprefix = objM_, major version = 1, minor version = 2, 
    file stem = wpobject;


parent class: SOMObject;


release order:
    wpSetTitle, wpQueryTitle, wpSetStyle, 
    wpQueryStyle, wpSetIcon, wpQueryIcon, 
    wpSetContainer, wpQueryContainer, wpSetNextObj, 
    wpQueryNextObj, wpSetDefaultView, wpQueryDefaultView, 
    wpMakeDormant, wpSaveState, wpBeginSave, 
    wpEndSave, wpSaveLong, wpSaveString, 
    wpSaveData, wpAppendSaveData, wpRestoreState, 
    wpBeginRestore, wpEndRestore, wpRestoreLong, 
    wpRestoreString, wpRestoreData, wpExtractRestoreData, 
    wpAllocMem, wpFreeMem, wpAddToObjUseList, 
    wpDeleteFromObjUseList, wpFindUseItem, wpSwitchTo, 
    withdrawn1, wpFilterPopupMenu, wpModifyPopupMenu, 
    wpMenuItemSelected, wpFormatDragItem, wpDrop, 
    wpDragOver, wpRender, wpEndConversation, 
    withdrawn10, wpMakeObject, wpDestroyObject, 
    wpFree, wpCopiedFromTemplate, wpAddSettingsPages, 
    wpAddObjectGeneralPage, wpDisplayHelp, wpMenuItemHelpSelected, 
    wpInsertSettingsPage, wpInsertPopupMenuItems, withdrawn5, 
    withdrawn6, withdrawn4, withdrawn3, 
    wpCnrInsertObject, wpCnrRemoveObject, wpInitData, 
    wpUnInitData, wpSetup, wpScanSetupString, 
    wpSaveImmediate, wpOpen, wpClose, 
    wpHide, wpRestore, wpSetIconData, 
    wpQueryIconData, wpQueryIconSaved, wpDelete, 
    wpConfirmDelete, withdrawn2, withdrawn11, 
    withdrawn7, wpRegisterView, wpIdentify, 
    wpclsInitData, wpclsUnInitData, withdrawn8, 
    wpclsMakeAwake, wpclsIncUsage, wpclsDecUsage, 
    wpclsQueryTitle, wpclsQueryIcon, wpSetDefaultHelp, 
    wpQueryDefaultHelp, wpclsQueryDefaultHelp, wpclsQueryStyle, 
    wpclsQueryDetailsInfo, wpclsQueryDefaultView, wpclsQueryDetails, 
    wpclsQuerySearchInfo, wpDoesObjectMatch, wpclsQueryExtendedCriteria, 
    wpclsCreateDefaultTemplates, withdrawn9, wpCnrRefreshDetails, 
    wpSetError, wpQueryError, wpDraggedOverObject, 
    wpDroppedOnObject, wpclsFindObjectFirst, wpclsFindObjectNext, 
    wpclsFindObjectEnd, wpclsFindObjects, wpclsSetError, 
    wpclsQueryError, wpclsQuerySettingsPageSize, wpclsSetSettingsPageSize, 
    wpclsQueryIconData, wpclsSetIcon, wpclsSetIconData, 
    wpSetDefaultIconPos, wpQueryDefaultIconPos, wpSetState, 
    wpQueryState, wpSetObjectID, wpQueryObjectID, 
    wpIsDeleteable, wpQueryHandle, wpclsQueryObject, 
    wpclsObjectFromHandle, wpSaveDeferred, wpclsSaveDirtyObjects, 
    wpclsLockDirtyList, wpclsUnlockDirtyList, wpclsLockRestartList, 
    wpclsUnlockRestartList, wpAddObjectWindowPage, wpQueryConcurrentView, 
    wpSetConcurrentView, wpQueryMinWindow, wpSetMinWindow, 
    wpViewObject, wpQueryButtonAppearance, wpSetButtonAppearance, 
    wpQueryConfirmations, wpCnrSetEmphasis, wpQueryCoreRecord, 
    wpclsQueryButtonAppearance, wpFindViewItem, wpCreateFromTemplate, 
    wpQueryTrueStyle, wpAssertObjectMutexSem, wpReleaseObjectMutexSem, 
    wpRequestObjectMutexSem, wpCreateAnother, wpCreateShadowObject, 
    wpCopyObject, wpMoveObject, wpLockObject, 
    wpUnlockObject, wpIsLocked, wpclsNew, 
    wpclsQueryFolder, wpRenderComplete, wpQueryDetailsData, 
    wpPrintObject, wpQueryTaskRec, wpSetTaskRec, 
    wpSnoozeNotify, wpclsLockSleepyList, wpclsUnlockSleepyList, 
    wpModifyStyle, wpclsRemoveObjects, wpSetInsertState, 
    wpFindTaskRec, wpAppendObject, wpReplaceObject, 
    wpQueryNameClashOptions, wpConfirmObjectTitle, pobjNext, 
    wpQueryContainerFlagPtr, wpAddWindowPosKey, wpDeleteWindowPosKeys, 
    wpclsInsertMultipleObjects, wpObjectInsertPreparation;


passthru: C.h;

   #define INCL_WINSTDCNR
   #include <pmstddlg.h>

      #ifndef M_WPObject
      #define M_WPObject SOMClass
      #endif
      #ifndef WPObject
      #define WPObject SOMAny
      #endif

      /* Object style flags (see wpSetStyle) */

      #define OBJSTYLE_NOMOVE          2
      #define OBJSTYLE_NOLINK          4
      #define OBJSTYLE_NOCOPY          8
      #define OBJSTYLE_NOTDEFAULTICON 16
      #define OBJSTYLE_TEMPLATE       32
      #define OBJSTYLE_NODELETE       64
      #define OBJSTYLE_NOPRINT       128
      #define OBJSTYLE_NODRAG        256
      #define OBJSTYLE_NOTVISIBLE    512
      #define OBJSTYLE_NOSETTINGS   1024
      #define OBJSTYLE_NORENAME     2048
      #define OBJSTYLE_NODROP       4096

      /*  Class style flags (see wpclsQueryStyle) */

      #define CLSSTYLE_NEVERMOVE      OBJSTYLE_NOMOVE
      #define CLSSTYLE_NEVERLINK      OBJSTYLE_NOLINK
      #define CLSSTYLE_NEVERCOPY      OBJSTYLE_NOCOPY
      #define CLSSTYLE_NEVERTEMPLATE  16
      #define CLSSTYLE_NEVERDELETE    OBJSTYLE_NODELETE
      #define CLSSTYLE_NEVERPRINT     OBJSTYLE_NOPRINT
      #define CLSSTYLE_NEVERDRAG      OBJSTYLE_NODRAG
      #define CLSSTYLE_NEVERVISIBLE   OBJSTYLE_NOTVISIBLE
      #define CLSSTYLE_NEVERRENAME    OBJSTYLE_NORENAME
      #define CLSSTYLE_PRIVATE        4096

      /*  Flags for the wpFilterPopupMenu() method */

      #define CTXT_CRANOTHER     0x0001   /* Flags for ulFlags */
      #define CTXT_NEW           CTXT_CRANOTHER
      #define CTXT_OPEN          0x0002
      #define CTXT_WINDOW        0x0004
      #define CTXT_SWITCHTO      CTXT_WINDOW
      #define CTXT_CLOSE         0x0008
      #define CTXT_SETTINGS      0x0010
      #define CTXT_PRINT         0x0020
      #define CTXT_HELP          0x0040
      #define CTXT_DELETE        0x0080
      #define CTXT_COPY          0x0100
      #define CTXT_MOVE          0x0200
      #define CTXT_SHADOW        0x0400
      #define CTXT_LINK          CTXT_SHADOW
      #define CTXT_PROGRAM       0x0800
      #define CTXT_ICON        0x001000
      #define CTXT_TREE        0x002000
      #define CTXT_DETAILS     0x004000
      #define CTXT_FIND        0x008000
      #define CTXT_SELECT      0x010000
      #define CTXT_ARRANGE     0x020000
      #define CTXT_SORT        0x040000
      #define CTXT_SHUTDOWN    0x080000
      #define CTXT_LOCKUP      0x100000
      #define CTXT_PALETTE     0x200000



      /* common context menu ids */

      #define WPMENUID_USER          0x6500
      #define WPMENUID_PRIMARY            0
      #define WPMENUID_OPEN               1
      #define WPMENUID_HELP               2
      #define WPMENUID_PRINT              3
      #define WPMENUID_SELECT     4
      #define WPMENUID_SORT       5


      /*  Open views for the wpOpen() method */

      #define OPEN_UNKNOWN      -1
      #define OPEN_DEFAULT       0
      #define OPEN_CONTENTS      1
      #define OPEN_SETTINGS      2
      #define OPEN_HELP          3
      #define OPEN_RUNNING       4
      #define OPEN_PROMPTDLG     5
      #define OPEN_PALETTE       121                                   /*SPLIT*/
      #define OPEN_USER          0x6500

      /*  Definitions for the INUSE list that is kept
       *  for every object via wpAddToObjUseList and
       *  wpRemoveFromObjUseList methods...
       */

      /* This structure is always followed immediately by a type
       * dependant struct such as MEMORYITEM,RECORDITEM,VIEWITEM
       * or some other user defined structure...
       */
      typedef struct _USEITEM
      {
         ULONG  type;                  /* Type of this Item */
         struct _USEITEM *pNext;   /* Next item in use list */
      } USEITEM;
      typedef USEITEM *PUSEITEM;

      #define USAGE_MEMORY          1  /* Values of 'type' */
      #define USAGE_CONTENTS        2
      #define USAGE_RECORD          4
      #define USAGE_OPENVIEW        5
      #define USAGE_LINK            6
      #define USAGE_OPENFILE       20

      typedef struct _MEMORYITEM       /* USAGE_MEMORY struct */
      {
         ULONG     cbBuffer;           /* Number of bytes in memory block */
      } MEMORYITEM;
      typedef MEMORYITEM *PMEMORYITEM;

      typedef struct _CONTENTSITEM     /* USAGE_CONTENTS struct */
      {
         BOOL      fCheckedFolders;    /* This struct contains pointers to  */
         WPObject *FolderContent;      /* objects that are contained within */
         BOOL      fCheckedContent;    /* a folder...                       */
         WPObject *Content;
      } CONTENTSITEM;
      typedef CONTENTSITEM *PCONTENTSITEM;

      typedef struct _RECORDITEM       /* USAGE_RECORD struct */
      {
         HWND            hwndCnr;      /* Cnr into which object is inserted */
         PMINIRECORDCORE pRecord;      /* Record pointer within that cnr */
         ULONG           ulUser;       /* For application use */         //RECSH
      } RECORDITEM;
      typedef RECORDITEM *PRECORDITEM;

      #define VIEWSTATE_OPENING       0x0001   /* The view is being opened */
      #define VIEWSTATE_OBJECTDELETED 0x0002   /* The object is being deleted */
      #define VIEWSTATE_USERHIDDEN    0x0004   /* The view was hidden by user */
      #define VIEWSTATE_POPULATING    0x0008   /* The view is populating      */

      typedef struct _VIEWITEM         /* USAGE_OPENVIEW struct */
      {
         ULONG        view;            /* Object view that this represents */
         LHANDLE      handle;          /* Open handle */
         ULONG        ulViewState;     /* View State flags */
         HWND         hwndCnr;         /* System use only (window animation) */
         PMINIRECORDCORE pRecord;      /* System use only (window animation) */
      } VIEWITEM;
      typedef VIEWITEM *PVIEWITEM;

      typedef struct _LINKITEM         /* USAGE_LINK struct */
      {
         WPObject    *LinkObj;         /* The link object */
      } LINKITEM;
      typedef LINKITEM *PLINKITEM;

      typedef struct _VIEWFILE         /* USAGE_OPENFILE struct */
      {
         ULONG        ulMenuId;        /* Menu id if association or menu page */
         LHANDLE      handle;          /* Open handle */
         HWND         hwndCnr;         /* System use only (window animation) */
         PMINIRECORDCORE pRecord;      /* System use only (window animation) */
      } VIEWFILE;
      typedef VIEWFILE *PVIEWFILE;

      /* Notes: The class name immediately follows the control block. The
       *        first instance variable control block immediately follows
       *        this.
       */
      typedef struct _WPSRCLASSBLOCK
      {
        SHORT   ClassNameLength;       /* Length of class name, including the
                                        * .. null terminator. This must be a
                                        * .. SHORT and must be at the beginning
                                        * .. of the structure.
                                        */
        USHORT  IVarLength;            /* Length of instance variable
                                        * .. information, including the two-
                                        * .. byte null terminator
                                        */
      } WPSRCLASSBLOCK;

      /*  Persistant storage structures (see wpSaveShort
       *  and wpRestoreShort etc...)
       */


      /* This control structure does not reside in the dormant state.
       * It is used only when a persistant data block is
       * resident in memory - either when an object is being saved or
       * when it is being restored...
       */
      typedef struct _OBJDATA
      {
         WPSRCLASSBLOCK       *CurrentClass;
         WPSRCLASSBLOCK       *First;
         PUCHAR                NextData;
         USHORT                Length;
      } OBJDATA;
      typedef OBJDATA *POBJDATA;

      /*  wpCnrInsertObject/wpCnrRemoveObject structs
       *  and macros...
       */

      typedef struct _CLASSDETAILS     /* Class Details struct */
      {
         PSZ          pszAttribute;    /* Translatable string for a class attribute*/
         PVOID        pSortRecord;     /* Function pointer for sort function for attribute*/
         struct _CLASSDETAILS *pNext; /* Next item in class details list */
      } CLASSDETAILS;
      typedef CLASSDETAILS *PCLASSDETAILS;

      /* Macro to return the object associated with a given MINIRECORDCORE
       * that was inserted using the wpCnrInsertObject method
       */
      #define OBJECT_FROM_PREC( prec )   ( (PVOID)( * (((PULONG)prec)-2) ) )

      /* Macro to access the app defineable dword within the RECORDITEM
       * structure that is created when an object is put into a list
       * control using the wpCnrInsertObject method.
       */
      PULONG EXPENTRY ShlGetUserWordPtr(
         HWND            hwndCnr,
         PMINIRECORDCORE prec );

      #define USERWORD_FROM_PREC( hwnd, prec )              \
         ( (ULONG)( *ShlGetUserWordPtr(hwnd,prec) ) )

      /* Details comparison function definition
       *
       *    Param1  PVOID   - Pointer to details field value
       *    Param2  PVOID   - Pointer to value to be compared with
       *
       *    Returns LONG    - Must be CMP_EQUAL, CMP_GREATER, CMP_LESS
       */
      typedef LONG (EXPENTRY FNCOMPARE)(PVOID,PVOID);
      typedef FNCOMPARE *PFNCOMPARE;

      #define CMP_EQUAL            0
      #define CMP_GREATER          1
      #define CMP_LESS             2
      #define CMP_GREATER_OR_EQUAL 3
      #define CMP_LESS_OR_EQUAL    4
      #define CMP_NOT_EQUAL        5

      #define NUM_CMP_VALUES       6

      /* Owner draw function definition
       *
       *    Param1  HWND  - Handle of window that is being painted
       *    Param2  PVOID - POWNERITEM structure pointer, see the container
       *                    control programming reference for the meaning
       *                    of the fields in this structure.
       *    Param3  PVOID - Pointer to the comparison value to draw (this
       *                    is NULL, except when this function is painting
       *                    its value into the include criteria dialog
       *                    when it points to Criteria.CompareValue...)
       *
       *    Returns BOOL  - TRUE if the field was ownerdrawn, FALSE if the
       *                    container control should do default painting.
       */
      typedef BOOL (EXPENTRY FNOWNDRW)(HWND,PVOID,PVOID);
      typedef FNOWNDRW *PFNOWNDRW;

      /* Details comparison criteria structure
       */
      typedef struct _CRITERIA
      {
         PVOID            pReserved;           /* Reserved - MUST be null!!!! */
         struct _CRITERIA *pNext;
         struct _CRITERIA *pPrev;
         ULONG            ClassFieldInfoIndex; /* Index of the details field  */
         ULONG            LogicalOperator;     /* CRITERIA_AND or CRITERIA_OR */
         ULONG            ComparisonType;      /* CMP_LESS_OR_EQUAL etc...    */
         ULONG            ulLenCompareValue;   /* sizeof(ComparisonData)      */
         CHAR             CompareValue[1];     /* Value to be compared with   */
      } CRITERIA;
      typedef CRITERIA *PCRITERIA;

      #define CRITERIA_AND        0
      #define CRITERIA_OR         1

      /* ClassCriteria structure: points to a linked list of CRITERIA
       * for the given class. ClassCriteria may be linked into a list
       * too - and passed to a filter object, or the wpclsFindObjectFirst
       * method call...
       */
      typedef struct _CLASSCRITERIA                                     /*!INC*/
      {
         struct _CLASSCRITERIA *pNext;
         struct _CLASSCRITERIA *pPrev;
         M_WPObject            *Class;          /* Class object */
         PCRITERIA              pCriteria;      /* Linked list of criteria */
         WPObject              *NotifyObject;   /* Owner of the criteria list */
      } CLASSCRITERIA;
      typedef CLASSCRITERIA *PCLASSCRITERIA;

      /* This structure is passed to a details criteria edit window
       * when it is created, so that it knows the current value and
       * min/max values for the criteria to be edited.
       *
       * As the user modifies the compare value using the criteria
       * edit window, it should update the buffer pointed to by
       * 'pCompareValue'.
       */
      typedef struct _EDITCTLINIT                                       /*!INC*/
      {
         ULONG cb;                /* must have length in control data! MindyP */
         PVOID pCompareValue;     /* Buffer containing the current value */
         ULONG ulLenCompareValue; /* Length of pCompareValue buffer */
         PVOID pMinCompareValue;  /* READ-ONLY parameter, NULL => default */
         PVOID pMaxCompareValue;  /* READ-ONLY parameter, NULL => default */
      } EDITCTLINIT;
      typedef EDITCTLINIT *PEDITCTLINIT;

      /* Structure for wpclsQueryDetailsInfo method
       *
       * CLASSFIELDINFO is identical to the FIELDINFO structure of the
       * container control with the following differences:
       *
       * - The offStruct field from FIELDINFO is reserved.
       * - The offFieldData and usLenFieldData structure elements have
       *   been added.
       * - Compare/Sort/Ownerdraw fields have also been added for the
       *   convenience of the programmer, so that object details can
       *   be customized and objects can be found or included by any
       *   of their displayable object details.
       *
       * For example if the application has the following details data:
       *
       * typedef struct _SAMPLE {
       *   CDATE   cdate;
       *   CTIME   ctime;
       *   PSZ     psz;
       * }  SAMPLE;
       *
       * classfieldinfo[0].offFieldData   = FIELDOFFSET(SAMPLE,cdate);
       * classfieldinfo[0].ulLenFieldData = FIELDOFFSET(SAMPLE,ctime) -
       *                                    FIELDOFFSET(SAMPLE,cdate);
       *
       * classfieldinfo[1].offFieldData   = FIELDOFFSET(SAMPLE,ctime);
       * classfieldinfo[1].ulLenFieldData = FIELDOFFSET(SAMPLE,psz) -
       *                                    FIELDOFFSET(SAMPLE,ctime);
       *
       * classfieldinfo[2].offFieldData   = FIELDOFFSET(SAMPLE,psz);
       * classfieldinfo[2].ulLenFieldData = sizeof(SAMPLE) -
       *                                    FIELDOFFSET(SAMPLE,psz);
       *
       * NOTE: It is essential that the fields be linked in order ex. above
       *       cdate must be followed by ctime and finally psz.
       */
      typedef struct _CLASSFIELDINFO                                    /*!INC*/
      {
         /* Details field attributes
          */
         ULONG      cb;                  /* size of CLASSFIELDINFO struct  */
         ULONG      flData;              /* attributes of field's data     */
         ULONG      flTitle;             /* attributes of field's title    */
         PVOID      pTitleData;          /* title data (default is string) */
                                         /* If CFT_BITMAP, must be HBITMAP */
         ULONG      ulReserved;          /* Reserved                       */
         PVOID      pUserData;           /* pointer to user data           */
         struct _CLASSFIELDINFO *pNextFieldInfo; /* pointer to next linked */
                                                /* CLASSFIELDINFO structure*/
         ULONG      cxWidth;             /* width of field in pels         */
         ULONG      offFieldData;        /* offset from beginning of       */
                                         /*   this class's data for this   */
                                         /*   field. (first field is 0).   */
         ULONG      ulLenFieldData;      /* width of data in bytes.        */
                                         /*   (4 for a pointer).           */
         PFNOWNDRW  pfnOwnerDraw;        /* Ownerdraw procedure for detail */
                                         /* column. Can be NULL except if  */
                                         /* ownerdraw is being used.       */
         /* Include/Sort parameters
          */
         ULONG      flCompare;           /* Flags: for example, use the    */
                                         /*   COMPARE_SUPPORTED flag if    */
                                         /*   your field can be compared   */
         PFNCOMPARE pfnCompare;          /* Comparison function for this   */
                                         /*   field. Can be NULL unless    */
                                         /*   ownerdraw is used.           */
         ULONG      DefaultComparison;   /* This is the default compare    */
                                         /*   operator in the include      */
                                         /*   page criteria dialog. (eg:   */
                                         /*   CMP_LESS_OR_EQUAL)           */
         ULONG      ulLenCompareValue;   /* Maximum length of the compare  */
                                         /*   data. Can be NULL unless     */
                                         /*   ownerdraw is used.           */
         PVOID      pDefCompareValue;    /* The default value to be used   */
                                         /*   for comparisons. Can be NULL */
                                         /*   unless ownerdraw is used.    */
         PVOID      pMinCompareValue;    /* The default value to be used   */
                                         /*   for comparisons.Can be NULL  */
                                         /*   unless ownerdraw is used.    */
         PVOID      pMaxCompareValue;    /* The default value to be used   */
                                         /*   for comparisons.Can be NULL  */
                                         /*   unless ownerdraw is used.    */
         PSZ        pszEditControlClass; /* Window class to be used to edit*/
                                         /*   the compare value. Can be    */
                                         /*   NULL unless ownerdraw is used*/
         PFNCOMPARE pfnSort;             /* Sort function for this @SM09511*/
                                         /*   field. Can be NULL unless    */
                                         /*   ownerdraw is used.           */
      } CLASSFIELDINFO;

      typedef CLASSFIELDINFO *PCLASSFIELDINFO;

      #define COMPARE_SUPPORTED      1
      #define SORTBY_SUPPORTED       2

      /* Standard notebook size constants */
      #define STDNOTEBOOKWIDTH    290
      #define STDNOTEBOOKHEIGHT   275

      /* Confirm flags */
      #define CONFIRM_DELETE        0x0001
      #define CONFIRM_DELETEFOLDER  0x0002
      #define CONFIRM_RENAMEFILESWITHEXT 0x0004
      #define CONFIRM_KEEPASSOC          0x0008
      #define CONFIRM_ACTION        0x0010
      #define CONFIRM_PROGRESS      0x0020

      #define OK_DELETE             1
      #define NO_DELETE             2
      #define CANCEL_DELETE         3

      #define NUM_OBJDETAILS_FIELDS    2     /* number of object details */

      /* Search Type for wpclsQueryExtendedCriteria */

      #define SEARCH_ALL_FOLDERS 1
      #define SEARCH_THIS_FOLDER 2
      #define SEARCH_THIS_TREE   3

      /* Find method related types and constants */

      typedef WPObject   *OBJECT;                             /* FIND */
      typedef OBJECT     *POBJECT;
      typedef M_WPObject *CLASS;
      typedef CLASS      *PCLASS;
      typedef LHANDLE     HFIND;
      typedef HFIND      *PHFIND;

      /* wpDrop method return code  */

      #define RC_DROP_DROPCOMPLETE 2
      #define RC_DROP_ITEMCOMPLETE 1
      #define RC_DROP_RENDERING    0
      #define RC_DROP_ERROR       -1

      /*handle for files being tracked by the shell */

      typedef LHANDLE HFS;
      #define MAXSZHFS 10       /* size of the translated string */

    #define SETTINGS_PAGE_REMOVED  -1

    /* wpSetConcurrentView values */
      #define CCVIEW_DEFAULT 0
      #define CCVIEW_ON      1
      #define CCVIEW_OFF     2

    /* wpSetMinWindow values */
      #define MINWIN_DEFAULT 0
      #define MINWIN_HIDDEN  1
      #define MINWIN_VIEWER  2
      #define MINWIN_DESKTOP 3

    /* wpSetButtonAppearance values */
      #define HIDEBUTTON      1
      #define MINBUTTON      2
      #define DEFAULTBUTTON  3

      #define  HIDDENMINWINDOW_DEFAULT MINWIN_VIEWER
      #define WPFolder SOMAny     /* Define WPFolder */

      typedef struct _TASKREC
      {
         struct _TASKREC *next;     /* next in the list of current tasks   */
         ULONG            useCount; /* can be referenced by multiple object*/
         PVOID            pStdDlg;  /* ptr to standard WP task dialog      */
         WPFolder        *folder;   /* intended folder for the object      */
         LONG             xOrigin;  /* intended position for the object    */
         LONG             yOrigin;  /* intended position for the object    */
         PSZ              pszTitle; /* intended name for the object        */
         ULONG            cbTitle;  /* length of the name buffer           */
         PMINIRECORDCORE  positionAfterRecord; /* intended sort position   */
         BOOL            fKeepAssociations;
         PVOID            pReserved;    /* reserved - equal null           */

      }  TASKREC;
      typedef TASKREC *PTASKREC;

endpassthru;
methods:


    ULONG    wpAddObjectGeneralPage(HWND hwndNotebook);

    ULONG    wpAddObjectWindowPage(HWND hwndNotebook);

    BOOL    wpAddSettingsPages(HWND hwndNotebook);

    BOOL    wpAddToObjUseList(PUSEITEM pUseItem);

    PBYTE    wpAllocMem(ULONG cbBytes,
		PULONG prc);

    BOOL32    wpAppendObject(WPObject *targetObject,
		BOOL32 fMove);

    BOOL    wpAssertObjectMutexSem();

    BOOL    wpClose();

    PMINIRECORDCORE    wpCnrInsertObject(HWND hwndCnr,
		PPOINTL pptlIcon,
		PMINIRECORDCORE preccParent,
		PRECORDINSERT pRecInsert);

    BOOL    wpCnrRemoveObject(HWND hwndCnr);

    BOOL    wpCnrSetEmphasis(ULONG ulEmphasisAttr,
		BOOL fTurnOn);

    ULONG    wpConfirmDelete(ULONG fConfirmations);

    ULONG    wpConfirmObjectTitle(WPFolder *Folder,
		WPObject **ppDuplicate,
		PSZ pszTitle,
		ULONG cbTitle,
		ULONG menuID);

    void    wpCopiedFromTemplate();

    WPObject *   wpCopyObject(WPFolder *Folder,
		BOOL fLock);

    WPObject *   wpCreateAnother(PSZ pszTitle,
		PSZ pszSetupEnv,
		WPFolder *Folder);

    WPObject *   wpCreateFromTemplate(WPFolder *folder,
		BOOL fLock);

    WPObject *   wpCreateShadowObject(WPFolder *Folder,
		BOOL fLock);

    ULONG    wpDelete(ULONG fConfirmations);

    BOOL    wpDeleteFromObjUseList(PUSEITEM pUseItem);

    BOOL    wpDisplayHelp(ULONG HelpPanelId,
		PSZ HelpLibrary);

    BOOL    wpDoesObjectMatch(PVOID pvoidExtendedCriteria);

    MRESULT    wpDraggedOverObject(WPObject *DraggedOverObject);

    MRESULT    wpDragOver(HWND hwndCnr,
		PDRAGINFO pdrgInfo);

    MRESULT    wpDrop(HWND hwndCnr,
		PDRAGINFO pdrgInfo,
		PDRAGITEM pdrgItem);

    BOOL    wpDroppedOnObject(WPObject *DroppedOnObject);

    MRESULT    wpEndConversation(ULONG ulItemID,
		ULONG flResult);

    ULONG    wpFilterPopupMenu(ULONG ulFlags,
		HWND hwndCnr,
		BOOL fMultiSelect);

    PUSEITEM    wpFindUseItem(ULONG type,
		PUSEITEM pCurrentItem);

    BOOL    wpFormatDragItem(PDRAGITEM pdrgItem);

    BOOL    wpFree();

    BOOL    wpFreeMem(PBYTE pByte);

    BOOL    wpHide();

    void    wpInitData();

    BOOL    wpInsertPopupMenuItems(HWND hwndMenu,
		ULONG iPosition,
		HMODULE hmod,
		ULONG MenuID,
		ULONG SubMenuID);

    ULONG    wpInsertSettingsPage(HWND hwndNotebook,
		PPAGEINFO ppageinfo);

    BOOL    wpMenuItemHelpSelected(ULONG MenuId);

    BOOL    wpMenuItemSelected(HWND hwndFrame,
		ULONG ulMenuId);

    BOOL    wpModifyPopupMenu(HWND hwndMenu,
		HWND hwndCnr,
		ULONG iPosition);

    BOOL    wpMoveObject(WPFolder *Folder);

    HWND    wpOpen(HWND hwndCnr,
		ULONG ulView,
		ULONG param);

    BOOL    wpPrintObject(PPRINTDEST pPrintDest,
		ULONG ulReserved);

    ULONG    wpQueryConcurrentView();

    ULONG    wpQueryButtonAppearance();

    ULONG    wpQueryConfirmations();

    BOOL    wpQueryDefaultHelp(PULONG pHelpPanelId,
		PSZ HelpLibrary);

    ULONG    wpQueryDefaultView();

    ULONG    wpQueryDetailsData(PVOID *ppDetailsData,
		PULONG pcp);

    ULONG    wpQueryError();

    HPOINTER    wpQueryIcon();

    ULONG    wpQueryIconData(PICONINFO pIconInfo);

    ULONG    wpQueryMinWindow();

    ULONG    wpQueryNameClashOptions(ULONG menuID);

    ULONG    wpQueryStyle();

    BOOL32    wpSetTaskRec(PTASKREC pNew,
		PTASKREC pOld);

    PTASKREC    wpFindTaskRec();

    PSZ    wpQueryTitle();

    BOOL    wpRegisterView(HWND hwndFrame,
		PSZ pszViewTitle);

    ULONG    wpReleaseObjectMutexSem();

    MRESULT    wpRender(PDRAGTRANSFER pdxfer);

    MRESULT    wpRenderComplete(PDRAGTRANSFER pdxfer,
		ULONG ulResult);

    BOOL32    wpReplaceObject(WPObject *targetObject,
		BOOL32 fMove);

    ULONG    wpRequestObjectMutexSem(ULONG ulTimeout);

    BOOL    wpRestore();

    BOOL    wpRestoreData(PSZ pszClass,
		ULONG ulKey,
		PBYTE pValue,
		PULONG pcbValue);

    BOOL    wpRestoreLong(PSZ pszClass,
		ULONG ulKey,
		PULONG pulValue);

    BOOL    wpRestoreState(ULONG ulReserved);

    BOOL    wpRestoreString(PSZ pszClass,
		ULONG ulKey,
		PSZ pszValue,
		PULONG pcbValue);

    BOOL    wpSaveData(PSZ pszClass,
		ULONG ulKey,
		PBYTE pValue,
		ULONG cbValue);

    BOOL    wpSaveImmediate();

    BOOL    wpSaveDeferred();

    BOOL    wpSaveLong(PSZ pszClass,
		ULONG ulKey,
		ULONG ulValue);

    BOOL    wpSaveState();

    BOOL    wpSaveString(PSZ pszClass,
		ULONG ulKey,
		PSZ pszValue);

    BOOL    wpScanSetupString(PSZ pszSetupString,
		PSZ pszKey,
		PSZ pszValue,
		PULONG pcbValue);

    VOID    wpSetConcurrentView(ULONG ulCCView);

    VOID    wpSetButtonAppearance(ULONG ulButtonType);

    BOOL    wpSetDefaultHelp(ULONG HelpPanelId,
		PSZ HelpLibrary);

    BOOL    wpSetDefaultView(ULONG ulView);

    BOOL    wpSetError(ULONG ulErrorId);

    BOOL    wpSetIcon(HPOINTER hptrNewIcon);

    BOOL    wpSetIconData(PICONINFO pIconInfo);

    VOID    wpSetMinWindow(ULONG ulMinWindow);

    BOOL    wpSetStyle(ULONG ulNewStyle);

    BOOL    wpModifyStyle(ULONG ulStyleFlags,
		ULONG ulStyleMask);

    BOOL    wpSetTitle(PSZ pszNewTitle);

    BOOL    wpSetup(PSZ pszSetupString);

    BOOL    wpSwitchTo(ULONG View);

    void    wpUnInitData();

    HWND    wpViewObject(HWND hwndCnr,
		ULONG ulView,
		ULONG param);

    ULONG    wpQueryTrueStyle(), procedure;

    HOBJECT    wpQueryHandle();

    BOOL    wpUnlockObject();

    override somInit;

    -- From SOMObject

    BOOL    wpclsCreateDefaultTemplates(WPObject *Folder), class;

    void    wpclsInitData(), class;

    WPObject *   wpclsMakeAwake(PSZ pszTitle,
		ULONG ulStyle,
		HPOINTER hptrIcon,
		POBJDATA pObjData,
		WPFolder *Folder,
		ULONG ulUser), class;

    WPObject *   wpclsNew(PSZ pszTitle,
		PSZ pszSetupEnv,
		WPFolder *Folder,
		BOOL fLock), class;

    BOOL    wpclsQueryDefaultHelp(PULONG pHelpPanelId,
		PSZ pszHelpLibrary), class;

    ULONG    wpclsQueryDefaultView(), class;

    PCLASSDETAILS    wpclsQueryDetails(), class;

    ULONG    wpclsQueryDetailsInfo(PCLASSFIELDINFO *ppClassFieldInfo,
		PULONG pSize), class;

    BOOL    wpclsQueryExtendedCriteria(PSZ pszName,
		ULONG ulSearchType,
		PVOID pvoidExtendedCriteria), class;

    WPObject *   wpclsQueryFolder(PSZ pszLocation,
		BOOL fLock), class;

    HPOINTER    wpclsQueryIcon(), class;

    VOID    wpclsQuerySearchInfo(M_WPObject **ClassExtended,
		M_WPObject **ClassCreate,
		PULONG pulClassCriteriaSize), class;

    ULONG    wpclsQueryStyle(), class;

    PSZ    wpclsQueryTitle(), class;

    void    wpclsUnInitData(), class;

    BOOL    wpclsFindObjectFirst(PCLASS pClassList,
		PHFIND phFind,
		PSZ pszTitle,
		WPFolder *Folder,
		BOOL fSubfolders,
		PVOID pExtendedCriteria,
		POBJECT pBuffer,
		PULONG pCount), class;

    BOOL    wpclsFindObjectNext(HFIND hFind,
		POBJECT pBuffer,
		PULONG pCount), class;

    BOOL    wpclsFindObjectEnd(HFIND hFind), class;

    BOOL    wpclsSetError(ULONG ulErrorId), class;

    ULONG    wpclsQueryError(), class;

    BOOL    wpclsQuerySettingsPageSize(PSIZEL pSizl), class;

    ULONG    wpclsQueryIconData(PICONINFO pIconInfo), class;

    WPObject *   wpclsQueryObject(HOBJECT hObject), class;

    ULONG    wpclsQueryButtonAppearance(), class;

    override somUninit, class;

    -- From SOMObject

    override somInitClass, class;

    -- From SOMClass

    override somNew, class;

    -- From SOMClass

    override somRenew, class;

    -- From SOMClass

