
/*
 * This file was generated by the SOM Compiler.
 * FileName: G:\cwpsh\rel\os2c\include\base\os2\wpobject.xh.
 * Generated using:
 *     SOM Precompiler somipc: 2.29.1.14
 *     SOM Emitter emitxh: 2.43
 */

/*
 *   Module Header
 * 
 *   Module Name: WPTYPES
 * 
 *   OS/2 Presentation Manager Workplace class definitions
 * 
 *   Copyright (c) International Business Machines Corporation 1994
 * 
 */


#ifndef SOM_WPObject_xh
#define SOM_WPObject_xh

class WPObject;

#define WPObject_MajorVersion 1
#define WPObject_MinorVersion 2

/*
 * Passthru lines: File: "C.h", "before"
 */

   #define INCL_WINSTDCNR
   #include <pmstddlg.h>

      #ifndef __cplusplus
        #ifndef M_WPObject
          #define M_WPObject SOMClass
        #endif
        #ifndef WPObject
          #define WPObject SOMObject
        #endif
      #else
        class M_WPObject;
        class WPObject;
      #endif

      #ifdef _wpCreateShadowObject2
         #undef _wpCreateShadowObject2
      #endif
      #define _wpCreateShadowObject2 _wpCreateShadowObjectExt

      #ifdef __cplusplus                                                 
            extern "C" {                                               
      #endif                                                             
      /* Export a convience function to find BS_NOTEBOOKBUTTON buttons */
      HWND APIENTRY WinNotebookButtonFromID(HWND hwndDlg, ULONG id);     

      /* Allow applications to wait for the Shell to be available */     
      #define WWFS_QUERY            0x80000000                           
      #define WWFS_DESKTOPCREATED   1                                    
      #define WWFS_DESKTOPOPENED    2                                    
      #define WWFS_DESKTOPPOPULATED 3                                    
      BOOL APIENTRY WinWaitForShell( ULONG ulEvent );                    
      #ifdef __cplusplus                                                 
            }                                                            
      #endif                                                             
                                                                         

      /* Object style flags (see wpSetStyle) */

      #define OBJSTYLE_NOMOVE         0x00000002
      #define OBJSTYLE_NOLINK         0x00000004
      #define OBJSTYLE_NOCOPY         0x00000008
      #define OBJSTYLE_NOTDEFAULTICON 0x00000010   /* Intentionally not declared CLSSTYLE */ 
      #define OBJSTYLE_TEMPLATE       0x00000020
      #define OBJSTYLE_NODELETE       0x00000040
      #define OBJSTYLE_NOPRINT        0x00000080
      #define OBJSTYLE_NODRAG         0x00000100
      #define OBJSTYLE_NOTVISIBLE     0x00000200
      #define OBJSTYLE_NOSETTINGS     0x00000400
      #define OBJSTYLE_NORENAME       0x00000800
      #define OBJSTYLE_NODROP         0x00001000
      #define OBJSTYLE_NODROPON       0x00002000   /* Use instead of OBJSTYLE_NODROP, 
                                              because OBJSTYLE_NODROP and     
                                              CLSSTYLE_PRIVATE have the same  
                                              value (DD 86093F) */            
      #define OBJSTYLE_CUSTOMICON     0x00004000  /* Use instead of OBJSTYLE_NOTDEFAULTICON  
                                               because OBJSTYLE_NOTDEFAULTICON and    
                                               CLSSTYLE_NEVERTEMPLATE have the same   
                                               value (DD 86093F) */                   
      #define OBJSTYLE_LOCKEDINPLACE  0x00020000 /* Lock an object in place */    

      /*  Class style flags (see wpclsQueryStyle) */

      #define CLSSTYLE_NEVERMOVE      OBJSTYLE_NOMOVE
      #define CLSSTYLE_NEVERLINK      OBJSTYLE_NOLINK
      #define CLSSTYLE_NEVERCOPY      OBJSTYLE_NOCOPY
      #define CLSSTYLE_NEVERTEMPLATE  0x00000010
      #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        0x00001000   /* Intentionally not declared OBJSTYLE */     
      #define CLSSTYLE_NEVERSETTINGS  OBJSTYLE_NOSETTINGS                      /*DD 86093F*/ 
      #define CLSSTYLE_NEVERDROPON    OBJSTYLE_NODROPON                        /*DD 86093F*/ 
      #define CLSSTYLE_HIDDEN         0x00008000  /* Use instead of CLSSTYLE_PRIVATE          
                                                 because OBJSTYLE_NODROP and             
                                                 CLSSTYLE_PRIVATE have the same          
                                                 value (DD 86093F) */                    
      #define CLSSTYLE_DONTTEMPLATE   0x00010000  /* Use instead of CLSSTYLE_NEVERTEMPLATE    
                                                 because OBJSTYLE_NOTDEFAULTICON and     
                                                 CLSSTYLE_NEVERTEMPLATE have the same    
                                                 value (DD 86093F) */                    
      #define CLSSTYLE_ALWAYSTEMPLATE 0x00040000

      /* Flags for wpObjectReady() method */ 
      #define OR_NEW           0x00000001
      #define OR_AWAKE         0x00000002
      #define OR_REFERENCE     0x10000000
      #define OR_FROMTEMPLATE (0x00000004 | OR_REFERENCE)
      #define OR_FROMCOPY     (0x00000008 | OR_REFERENCE)
      #define OR_SHADOW       (0x00000010 | OR_REFERENCE)

      /*  Flags for the wpFilterPopupMenu/wpFilterMenu methods */

      /* DWORD 0  */
      #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_PROPERTIES    CTXT_SETTINGS
      #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
      #define CTXT_REFRESH     0x400000
      #define CTXT_PICKUP      0x800000
      #define CTXT_PUTDOWN        0x1000000
      #define CTXT_PUTDOWN_CANCEL 0x2000000
      #define CTXT_CHANGETOICON   0x4000000
      #define CTXT_CHANGETOTREE   0x8000000
      #define CTXT_CHANGETODETAILS 0x10000000
      #define CTXT_VIEW            0x20000000
      #define CTXT_PASTE           0x40000000
      #define CTXT_UNDOARRANGE     0x80000000

      /* DWORD 1  */
      #define CTXT_SELECTALL      0x00000001
      #define CTXT_DESELECTALL    0x00000002
      #define CTXT_OPENPARENT     0x00000004
      #define CTXT_SETUP          0x00000008
      #define CTXT_PRODINFO       0x00000010
      #define CTXT_ORIGINAL       0x00000020
      #define CTXT_LOCATEORIGINAL 0x00000040
      #define CTXT_DELETEORIGINAL 0x00000080
      #define CTXT_COPYORIGINAL   0x00000100
      #define CTXT_NOOBJECTS      0x00000200
      #define CTXT_MAXIMIZE       0x00000400
      #define CTXT_RESTORE        0x00000800
      #define CTXT_WINDOWLIST     0x00002000
      #define CTXT_CREATEPARTITION 0x00004000
      #define CTXT_COPYDISK       0x00008000
      #define CTXT_FORMATDISK     0x00010000
      #define CTXT_CHECKDISK      0x00020000
      #define CTXT_LOCKDISK       0x00040000
      #define CTXT_UNLOCKDISK     0x00080000
      #define CTXT_EJECTDISK      0x00100000
      #define CTXT_LOGIN          0x00200000
      #define CTXT_LOGOUT         0x00400000
      #define CTXT_ASSIGN         0x00800000
      #define CTXT_UNASSIGN       0x01000000
      #define CTXT_ACCESSNEW      0x02000000
      #define CTXT_DATETIME       0x04000000
      #define CTXT_LOCKEDINPLACE    0x08000000
      #define CTXT_LOCKEDINPLACEYES 0x10000000
      #define CTXT_LOCKEDINPLACENO  0x20000000
      #define CTXT_STANDARD         0x40000000
      #define CTXT_PERIMETER        0x80000000

      /* DWORD 2  */
      #define CTXT_SELECTEDHORZ     0x00000001
      #define CTXT_SELECTEDVERT     0x00000002
      #define CTXT_ARRANGETOP       0x00000004
      #define CTXT_LOGOFF           0x00000008
      #define CTXT_ARRANGELEFT      0x00000010
      #define CTXT_ARRANGERIGHT     0x00000020
      #define CTXT_ARRANGEBOTTOM    0x00000040
      #define CTXT_UNDOSORT         0x00000080

     /* Flags for the wpDisplayMenu() method */

     #define MENU_OBJECTPOPUP          0x00000001
     #define MENU_OPENVIEWPOPUP        0x00000002
     #define MENU_TITLEBARPULLDOWN     0x00000003
     #define MENU_TITLEBARPULLDOWNINT  0x00000004
     #define MENU_FOLDERPULLDOWN       0x00000005
     #define MENU_VIEWPULLDOWN         0x00000006
     #define MENU_HELPPULLDOWN         0x00000007
     #define MENU_EDITPULLDOWN         0x00000008
     #define MENU_SELECTEDPULLDOWN     0x00000009
     #define MENU_FOLDERMENUBAR        0x0000000A
     #define MENU_NODISPLAY            0x40000000
     #define MENU_USER                 0x80000000

      typedef struct _FILTERFLAGS
      {
         ULONG       cbItem;
         ULONG       Flags[3];
      } FILTERFLAGS;
      typedef FILTERFLAGS *PFILTERFLAGS;

      /* 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
      #define WPMENUID_TREE               123                                 /*DD 86092F*/  
      #define WPMENUID_FIND               8                                   /*DD 86092F*/  
      #define WPMENUID_CREATEANOTHER      101                                 /*DD 86092F*/  
      #define WPMENUID_MOVE               107                                 /*DD 86092F*/  
      #define WPMENUID_COPY               108                                 /*DD 86092F*/  
      #define WPMENUID_DELETE             109                                 /*DD 86092F*/  
      #define WPMENUID_PROPERTIES         112                                 /*DD 86092F*/  
      #define WPMENUID_SELALL             114                                 /*DD 86092F*/  
      #define WPMENUID_DESELALL           115                                 /*DD 86092F*/  
      #define WPMENUID_RESERVED1          118                                 /*DD 86092F*/  
      #define WPMENUID_CLOSE              120                                 /*DD 86092F*/  
      #define WPMENUID_FORMAT             124                                 /*DD 86092F*/  
      #define WPMENUID_CHKDSK             128                                 /*DD 86092F*/  
      #define WPMENUID_FIXDSK             129                                 /*DD 86092F*/  
      #define WPMENUID_PROGRAM            132                                 /*DD 86092F*/  
      #define WPMENUID_COPYDSK            182                                 /*DD 86092F*/  
      #define WPMENUID_LOCKDISK           184                                 /*DD 86092F*/  
      #define WPMENUID_EJECTDISK          185                                 /*DD 86092F*/  
      #define WPMENUID_UNLOCKDISK         186                                 /*DD 86092F*/  
      #define WPMENUID_PICKUP             188                                 /* rme77131*/  
      #define WPMENUID_PUTDOWN            189                                 /* rme77131*/  
      #define WPMENUID_PUTDOWN_COPY       190                                 /* rme77131*/  
      #define WPMENUID_PUTDOWN_MOVE       191                                 /* rme77131*/  
      #define WPMENUID_PUTDOWN_LINK       192                                 /* rme77131*/  
      #define WPMENUID_PUTDOWN_CANCEL     193                                 /* rme77131*/  
      #define WPMENUID_PUTDOWN_CREATE     194                                 /* rme77131*/  
      #define WPMENUID_PUTDOWN_CREATEPROGRAMOBJECT     195                    /*rme146942*/  
      #define WPMENUID_ICON               303                                 /*DD 86092F*/  
      #define WPMENUID_DETAILS            304                                 /*DD 86092F*/  
      #define WPMENUID_ARRANGE            309                                 /*DD 86092F*/  
      #define WPMENUID_RESERVED2          315                                 /*DD 86092F*/  
      #define WPMENUID_CREATESHADOW       316                                 /*DD 86092F*/  
      #define WPMENUID_PALETTE            317                                 /*DD 86092F*/  
      #define WPMENUID_REFRESH            503                                 /*DD 86092F*/  
      #define WPMENUID_HELP_FOR_HELP      601                                 /*DD 86092F*/  
      #define WPMENUID_HOWTOGETHELP       601                                 /*DD 86092F*/  
      #define WPMENUID_EXTENDEDHELP       602                                 /*DD 86092F*/  
      #define WPMENUID_HELPKEYS           603                                 /*DD 86092F*/  
      #define WPMENUID_HELPINDEX          604                                 /*DD 86092F*/  
      #define WPMENUID_SHUTDOWN           704                                 /*DD 86092F*/  
      #define WPMENUID_LOCKUP             705                                 /*DD 86092F*/  
      #define WPMENUID_LOGIN              708                                 /*DD 86092F*/  
      #define WPMENUID_LOGOUT             709                                 /*DD 86092F*/  
      #define WPMENUID_ASSIGN             710                                 /*DD 86092F*/  
      #define WPMENUID_UNASSIGN           711                                 /*DD 86092F*/  
      #define WPMENUID_ACCESSNEW          712                                 /*DD 86092F*/  
      #define WPMENUID_SYSTEMSETUP        713                                 /*DD 86092F*/  
      #define WPMENUID_OPENPARENT         714                                 /*DD 86092F*/  

      /* menu ids for folder menu bar */
      #define WPMENUID_PASTE              715                                 /*pwbopend */  
      #define WPMENUID_CHANGETOICON       716                                 /*pwbopend */  
      #define WPMENUID_CHANGETOTREE       717                                 /*pwbopend */  
      #define WPMENUID_CHANGETODETAILS    718                                 /*pwbopend */  
      #define WPMENUID_FOLDERPULLDOWN     719                                 /*pwbopend */  
      #define WPMENUID_EDITPULLDOWN       720                                 /*pwbopend */  
      #define WPMENUID_VIEWPULLDOWN       721                                 /*pwbopend */  
      #define WPMENUID_SELECTEDPULLDOWN   722                                 /*pwbopend */  
      #define WPMENUID_HELPPULLDOWN       723                                 /*pwbopend */  
      #define WPMENUID_VIEW               104                                 /*pwbopend */  
      #define WPMENUID_UNDOARRANGE        724                                 /*pwbopend */  
      #define WPMENUID_MAXIMIZE           725                                 /*pwbopend */  
      #define WPMENUID_RESTORE            726                                 /*pwbopend */  
      #define WPMENUID_WINDOWLIST         728                                 /*pwbopend */  
      #define WPMENUID_DOCSHELL           729                                 /*aba142270*/  
      #define WPMENUID_LOCKEDINPLACE      730                                 /*lwb146937*/  
      #define WPMENUID_LOCKEDINPLACEYES   731                                 /*lwb146937*/  
      #define WPMENUID_LOCKEDINPLACENO    732                                 /*lwb146937*/  
      #define WPMENUID_STANDARD           733                                 /*lwb146937*/  
      #define WPMENUID_ARRANGETOP         734                                 /*lwb149411*/  
      #define WPMENUID_ARRANGELEFT        735                                 /*lwb149411*/  
      #define WPMENUID_ARRANGERIGHT       736                                 /*lwb149411*/  
      #define WPMENUID_ARRANGEBOTTOM      737                                 /*lwb149411*/  
      #define WPMENUID_LOGOFF             738                                 /*pgm 141223*/ 
      #define WPMENUID_PERIMETER          739                                 /*lwb149411*/  
      #define WPMENUID_SELECTEDHORZ       740                                 /*lwb149411*/  
      #define WPMENUID_SELECTEDVERT       741                                 /*lwb149411*/  


      /*  Views for the wpOpen(), wpFilterMenu and wpModifyMenu methods */

      #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
      #define CLOSED_ICON        122
      #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_RECORD          4
      #define USAGE_OPENVIEW        5
      #define USAGE_LINK            6
      #define USAGE_OPENFILE       20
      #define USAGE_NOTIFY         21
      #define USAGE_BACKGROUNDBMP  22

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

      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 has been deleted */
      #define VIEWSTATE_USERHIDDEN    0x0004   /* The view was hidden by user */
      #define VIEWSTATE_POPULATING    0x0008   /* The view is populating      */
      #define VIEWSTATE_USERMINIMIZED 0x0010   /* The view was minimized by the user */
      #define VIEWSTATE_CLOSING       0x0020   /* The view is closing */
      #define VIEWSTATE_DELETING      0x0040   /* The object is being deleted */
      #define VIEWSTATE_PAINTED       0x0080   /* The view was painted */

      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 and USAGE_NOTIFY 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;

      typedef struct _BACKGROUNDBMPITEM /* USAGE_BACKGROUNDBMP struc */
      {
         PVOID        pFolderBackground;
      } BACKGROUNDBMPITEM;
      typedef BACKGROUNDBMPITEM *PBACKGROUNDBMPITEM;

      /* 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;

      /* Note: On PowerPC all structures are word aligned. sizeof
       * returns the size of structures aligned to the largest type
       * found in structure.  In otherwords, a structure containing
       * a long and a short will result in a sizeof 8 rather than 6
       * because the larger type long is used to align the structure.
       * 3 shorts in a structure will return 6 as expected.
       * The following two macros are used in place of the sizeof operator
       * when referencing the OBJDATA structure to ensure we have the
       * correct offset.  BEWARE: Changing the OBJDATA structure requires
       * that the following macros are change accordingly.
       */
      #define POBJDATA_SIZE             offsetof(OBJDATA,Length)+2
      #define ADVANCEOVER_OBJDATA( x )  (((UCHAR*)(x))+POBJDATA_SIZE)

      /*  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
      {
         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
      {
         ULONG cb;                /* must have length in control data! */
         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
      {
         /* 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         */
                                         /*   field. Can be NULL unless    */
                                         /*   ownerdraw is used.           */
         PSZ        *pNewComp;
      } CLASSFIELDINFO;

      typedef CLASSFIELDINFO *PCLASSFIELDINFO;

      #define COMPARE_SUPPORTED      1
      #define SORTBY_SUPPORTED       2

      /* Standard notebook size constants */
      #define STDNOTEBOOKWIDTH    250
      #define STDNOTEBOOKHEIGHT   125

      /* 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 CONFIRM_ALLOWFORCEDELETE   0x0040
      #define CONFIRM_FORCEDELETE        0x0080

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

      #define NUM_OBJDETAILS_FIELDS    5     /* 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;
      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;
      typedef LHANDLE HABS;
      #define MAXSZHFS 10       /* size of the translated string */
      #define MAKE_HOBJ(base, handle) ((HOBJECT) (((ULONG)(base) & 0x00FF0000) | (((ULONG)(handle) & 0x00FF0000) << 8) | ((ULONG)(handle) & 0x0000FFFF)) )
      #define BASEHANDLE_FROM_HOBJ(objh) ((ULONG) ((((objh) & 0xFF000000) >> 8) | ((objh) & 0xFFFF)))
      #define HABS_FROM_HOBJ(objh) ((HABS)BASEHANDLE_FROM_HOBJ(objh))
      #define HFS_FROM_HOBJ(objh) ((HFS)BASEHANDLE_FROM_HOBJ(objh))
      #define BASECLS_FROM_HOBJ(objh) ((ULONG) ((objh) & 0x00FF0000))
      #define MAXHANDLE  0x00FFFFFF

      #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

    /* wpConfirmObjectTitle return values */
      #define NAMECLASH_CANCEL              0x00
      #define NAMECLASH_NONE                0x01
      #define NAMECLASH_RENAME              0x02
      #define NAMECLASH_APPEND              0x04
      #define NAMECLASH_REPLACE             0x08
      #define NAMECLASH_RENAME_KEEPASSOCS   0x20
      #define NAMECLASH_NONE_KEEPASSOCS     0x30

    /* wpQueryNameClashOptions return values */
      #define NO_NAMECLASH_RENAME           0x10
      #define NO_NAMECLASH_APPEND           0x20
      #define NO_NAMECLASH_REPLACE          0x40
      #define NO_NAMECLASH_DIALOG           0x80

      #define  HIDDENMINWINDOW_DEFAULT MINWIN_VIEWER
      #ifndef __cplusplus
        #ifndef WPFolder
          #define WPFolder SOMObject     /* Define WPFolder */
        #endif
      #else
        class WPFolder;
      #endif

      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;

      typedef struct _OBJDETAILS
      {
        PSZ    ObjTitle;
        ULONG  ObjStyle;
        PSZ    ObjClass;
      } OBJDETAILS;
      typedef OBJDETAILS *POBJDETAILS;

#define VIEW_CONTENTS      0x00000001
#define VIEW_SETTINGS      0x00000002
#define VIEW_HELP          0x00000004
#define VIEW_RUNNING       0x00000008
#define VIEW_DETAILS       0x00000010
#define VIEW_TREE          0x00000020
#define VIEW_ANY           0xFFFFFFFF  /* Special case - will find any ViewItem */

/* Identifier types for the wpIdentify() method */

#define ID_TYPE_DISK     'H'
#define ID_TYPE_FILE     'F'
#define ID_TYPE_DIR      'D'
#define ID_TYPE_TRANS    'T'
#define ID_TYPE_ABS      'A'

/*
 * Passthru some stuff to the .h file
 */


/* C++ SOM defs */
#include <somcls.xh>
#include <somcm.xh>

/* C++ parent defs */
#ifndef SOM_SOMObject_xh
#include <somobj.xh>
#endif

#ifndef WPObject_API
#define WPObject_API
/*
 * -- The Class API
 */

/*
 * Start of bindings for IDL types
 */

class SOMClass;
class SOMObject;
class WPFolder;
class M_WPObject;
class WPObject;
class WPImageFile;

/*
 * End of bindings for IDL types.
 */

/* A procedure to create the WPObject Class */
class M_WPObject;
SOMEXTERN M_WPObject * SOMLINK WPObjectNewClass(
		integer4 majorVersion,
		integer4 minorVersion);

/* The API to the WPObject class object, and the methods it introduces. */
SOMEXTERN struct WPObjectClassDataStructure {
	M_WPObject *classObject;
	somMToken wpSetTitle;
	somMToken wpQueryTitle;
	somMToken wpSetStyle;
	somMToken wpQueryStyle;
	somMToken wpSetIcon;
	somMToken wpQueryIcon;
	somMToken wpSetFolder;
	somMToken wpQueryFolder;
	somMToken wpObjectPrivate1;
	somMToken wpObjectPrivate2;
	somMToken wpSetDefaultView;
	somMToken wpQueryDefaultView;
	somMToken wpObjectPrivate3;
	somMToken wpSaveState;
	somMToken wpObjectPrivate4;
	somMToken wpObjectPrivate5;
	somMToken wpSaveLong;
	somMToken wpSaveString;
	somMToken wpSaveData;
	somMToken wpObjectPrivate6;
	somMToken wpRestoreState;
	somMToken wpObjectPrivate7;
	somMToken wpObjectPrivate8;
	somMToken wpRestoreLong;
	somMToken wpRestoreString;
	somMToken wpRestoreData;
	somMToken wpObjectPrivate9;
	somMToken wpAllocMem;
	somMToken wpFreeMem;
	somMToken wpAddToObjUseList;
	somMToken wpDeleteFromObjUseList;
	somMToken wpFindUseItem;
	somMToken wpSwitchTo;
	somMToken withdrawn1;
	somMToken wpFilterPopupMenu;
	somMToken wpModifyPopupMenu;
	somMToken wpMenuItemSelected;
	somMToken wpFormatDragItem;
	somMToken wpDrop;
	somMToken wpDragOver;
	somMToken wpRender;
	somMToken wpEndConversation;
	somMToken withdrawn10;
	somMToken wpObjectPrivate10;
	somMToken wpObjectPrivate11;
	somMToken wpFree;
	somMToken wpCopiedFromTemplate;
	somMToken wpAddSettingsPages;
	somMToken wpAddObjectGeneralPage;
	somMToken wpDisplayHelp;
	somMToken wpMenuItemHelpSelected;
	somMToken wpInsertSettingsPage;
	somMToken wpInsertPopupMenuItems;
	somMToken withdrawn5;
	somMToken withdrawn6;
	somMToken withdrawn4;
	somMToken withdrawn3;
	somMToken wpCnrInsertObject;
	somMToken wpCnrRemoveObject;
	somMToken wpInitData;
	somMToken wpUnInitData;
	somMToken wpSetup;
	somMToken wpScanSetupString;
	somMToken wpSaveImmediate;
	somMToken wpOpen;
	somMToken wpClose;
	somMToken wpHide;
	somMToken wpRestore;
	somMToken wpSetIconData;
	somMToken wpQueryIconData;
	somMToken wpObjectPrivate12;
	somMToken wpDelete;
	somMToken wpConfirmDelete;
	somMToken withdrawn2;
	somMToken withdrawn11;
	somMToken withdrawn7;
	somMToken wpRegisterView;
	somMToken wpIdentify;
	somMToken wpSetDefaultHelp;
	somMToken wpQueryDefaultHelp;
	somMToken wpDoesObjectMatch;
	somMToken wpCnrRefreshDetails;
	somMToken wpSetError;
	somMToken wpQueryError;
	somMToken wpDraggedOverObject;
	somMToken wpDroppedOnObject;
	somMToken wpSetDefaultIconPos;
	somMToken wpQueryDefaultIconPos;
	somMToken wpObjectPrivate13;
	somMToken wpObjectPrivate14;
	somMToken wpSetObjectID;
	somMToken wpQueryObjectID;
	somMToken wpIsDeleteable;
	somMToken wpQueryHandle;
	somMToken wpSaveDeferred;
	somMToken wpAddObjectWindowPage;
	somMToken wpQueryConcurrentView;
	somMToken wpSetConcurrentView;
	somMToken wpQueryMinWindow;
	somMToken wpSetMinWindow;
	somMToken wpViewObject;
	somMToken wpQueryButtonAppearance;
	somMToken wpSetButtonAppearance;
	somMToken wpQueryConfirmations;
	somMToken wpCnrSetEmphasis;
	somMToken wpQueryCoreRecord;
	somMToken wpFindViewItem;
	somMToken wpCreateFromTemplate;
	somMethodProc *wpQueryTrueStyle;
	somMToken wpAssertObjectMutexSem;
	somMToken wpReleaseObjectMutexSem;
	somMToken wpRequestObjectMutexSem;
	somMToken wpCreateAnother;
	somMToken wpCreateShadowObject;
	somMToken wpCopyObject;
	somMToken wpMoveObject;
	somMToken wpLockObject;
	somMToken wpUnlockObject;
	somMToken wpIsLocked;
	somMToken wpRenderComplete;
	somMToken wpQueryDetailsData;
	somMToken wpPrintObject;
	somMToken wpObjectPrivate15;
	somMToken wpSetTaskRec;
	somMToken wpObjectPrivate16;
	somMToken wpModifyStyle;
	somMToken wpObjectPrivate17;
	somMToken wpFindTaskRec;
	somMToken wpAppendObject;
	somMToken wpReplaceObject;
	somMToken wpQueryNameClashOptions;
	somMToken wpConfirmObjectTitle;
	somMToken _get_pobjNext;
	somMToken wpQueryContainerFlagPtr;
	somMToken wpObjectPrivate18;
	somMToken wpObjectPrivate19;
	somMToken wpObjectPrivate20;
	somMToken wpCnrDeleteUseItem;
	somMToken wpObjectReady;
	somMToken wpIsObjectInitialized;
	somMToken wpCreateShadowObjectExt;
	somMToken wpObjectPrivate21;
	somMToken wpObjectPrivate22;
	somMToken wpObjectPrivate26;
	somMToken wpDisplayMenu;
	somMToken wpWaitForClose;
	somMToken wpQueryScreenGroupID;
	somMToken wpSetupOnce;
	somMToken wpAddObjectGeneralPage2;
	somMToken wpObjectPrivate23;
	somMToken wpObjectPrivate24;
	somMToken wpModifyMenu;
	somMToken wpFilterMenu;
	somMToken wpInsertMenuItems;
	somMToken wpSetMenuStyle;
	somMToken wpQueryMenuStyle;
	somMToken wpObjectPrivate27;
	somMToken wpObjectPrivate28;
	somMToken wpObjectPrivate29;
	somMToken wpObjectPrivate30;
	somMToken wpQueryOpenView;
	somMToken wpSetOpenView;
	somMToken wpObjectPrivate31;
	somMToken wpObjectPrivate32;
	somMToken wpObjectPrivate33;
} SOMDLINK WPObjectClassData;
#define _WPObject WPObjectClassData.classObject

/* The API to parentMtabs for WPObject, and the instance data it introduces. */
SOMEXTERN struct WPObjectCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken              instanceDataToken;
} SOMDLINK WPObjectCClassData;

/*
 * -- Typedefs for WPObject Method Procedures
 */
SOMEXTERN {
typedef ULONG   SOMLINK somTP_WPObject_wpAddObjectGeneralPage(WPObject *somSelf, 
		HWND hwndNotebook);
typedef somTP_WPObject_wpAddObjectGeneralPage *somTD_WPObject_wpAddObjectGeneralPage;
typedef ULONG   SOMLINK somTP_WPObject_wpAddObjectGeneralPage2(WPObject *somSelf, 
		HWND hwndNotebook);
typedef somTP_WPObject_wpAddObjectGeneralPage2 *somTD_WPObject_wpAddObjectGeneralPage2;
typedef ULONG   SOMLINK somTP_WPObject_wpAddObjectWindowPage(WPObject *somSelf, 
		HWND hwndNotebook);
typedef somTP_WPObject_wpAddObjectWindowPage *somTD_WPObject_wpAddObjectWindowPage;
typedef BOOL   SOMLINK somTP_WPObject_wpAddSettingsPages(WPObject *somSelf, 
		HWND hwndNotebook);
typedef somTP_WPObject_wpAddSettingsPages *somTD_WPObject_wpAddSettingsPages;
typedef BOOL   SOMLINK somTP_WPObject_wpAddToObjUseList(WPObject *somSelf, 
		PUSEITEM pUseItem);
typedef somTP_WPObject_wpAddToObjUseList *somTD_WPObject_wpAddToObjUseList;
typedef PBYTE   SOMLINK somTP_WPObject_wpAllocMem(WPObject *somSelf, 
		ULONG cbBytes, 
		PULONG prc);
typedef somTP_WPObject_wpAllocMem *somTD_WPObject_wpAllocMem;
typedef BOOL32   SOMLINK somTP_WPObject_wpAppendObject(WPObject *somSelf, 
		WPObject* targetObject, 
		BOOL32 fMove);
typedef somTP_WPObject_wpAppendObject *somTD_WPObject_wpAppendObject;
typedef BOOL   SOMLINK somTP_WPObject_wpAssertObjectMutexSem(WPObject *somSelf);
typedef somTP_WPObject_wpAssertObjectMutexSem *somTD_WPObject_wpAssertObjectMutexSem;
typedef BOOL   SOMLINK somTP_WPObject_wpClose(WPObject *somSelf);
typedef somTP_WPObject_wpClose *somTD_WPObject_wpClose;
typedef PMINIRECORDCORE   SOMLINK somTP_WPObject_wpCnrInsertObject(WPObject *somSelf, 
		HWND hwndCnr, 
		PPOINTL pptlIcon, 
		PMINIRECORDCORE preccParent, 
		PRECORDINSERT pRecInsert);
typedef somTP_WPObject_wpCnrInsertObject *somTD_WPObject_wpCnrInsertObject;
typedef BOOL   SOMLINK somTP_WPObject_wpCnrRemoveObject(WPObject *somSelf, 
		HWND hwndCnr);
typedef somTP_WPObject_wpCnrRemoveObject *somTD_WPObject_wpCnrRemoveObject;
typedef BOOL   SOMLINK somTP_WPObject_wpCnrSetEmphasis(WPObject *somSelf, 
		ULONG ulEmphasisAttr, 
		BOOL fTurnOn);
typedef somTP_WPObject_wpCnrSetEmphasis *somTD_WPObject_wpCnrSetEmphasis;
typedef ULONG   SOMLINK somTP_WPObject_wpConfirmDelete(WPObject *somSelf, 
		ULONG fConfirmations);
typedef somTP_WPObject_wpConfirmDelete *somTD_WPObject_wpConfirmDelete;
typedef ULONG   SOMLINK somTP_WPObject_wpConfirmObjectTitle(WPObject *somSelf, 
		WPFolder* Folder, 
		WPObject** ppDuplicate, 
		PSZ pszTitle, 
		ULONG cbTitle, 
		ULONG menuID);
typedef somTP_WPObject_wpConfirmObjectTitle *somTD_WPObject_wpConfirmObjectTitle;
typedef void   SOMLINK somTP_WPObject_wpCopiedFromTemplate(WPObject *somSelf);
typedef somTP_WPObject_wpCopiedFromTemplate *somTD_WPObject_wpCopiedFromTemplate;
typedef WPObject*   SOMLINK somTP_WPObject_wpCopyObject(WPObject *somSelf, 
		WPFolder* Folder, 
		BOOL fLock);
typedef somTP_WPObject_wpCopyObject *somTD_WPObject_wpCopyObject;
typedef WPObject*   SOMLINK somTP_WPObject_wpCreateAnother(WPObject *somSelf, 
		PSZ pszTitle, 
		PSZ pszSetupEnv, 
		WPFolder* Folder);
typedef somTP_WPObject_wpCreateAnother *somTD_WPObject_wpCreateAnother;
typedef WPObject*   SOMLINK somTP_WPObject_wpCreateFromTemplate(WPObject *somSelf, 
		WPFolder* folder, 
		BOOL fLock);
typedef somTP_WPObject_wpCreateFromTemplate *somTD_WPObject_wpCreateFromTemplate;
typedef WPObject*   SOMLINK somTP_WPObject_wpCreateShadowObject(WPObject *somSelf, 
		WPFolder* Folder, 
		BOOL fLock);
typedef somTP_WPObject_wpCreateShadowObject *somTD_WPObject_wpCreateShadowObject;
typedef ULONG   SOMLINK somTP_WPObject_wpDelete(WPObject *somSelf, 
		ULONG fConfirmations);
typedef somTP_WPObject_wpDelete *somTD_WPObject_wpDelete;
typedef BOOL   SOMLINK somTP_WPObject_wpDeleteFromObjUseList(WPObject *somSelf, 
		PUSEITEM pUseItem);
typedef somTP_WPObject_wpDeleteFromObjUseList *somTD_WPObject_wpDeleteFromObjUseList;
typedef BOOL   SOMLINK somTP_WPObject_wpDisplayHelp(WPObject *somSelf, 
		ULONG HelpPanelId, 
		PSZ HelpLibrary);
typedef somTP_WPObject_wpDisplayHelp *somTD_WPObject_wpDisplayHelp;
typedef HWND   SOMLINK somTP_WPObject_wpDisplayMenu(WPObject *somSelf, 
		HWND hwndOwner, 
		HWND hwndClient, 
		POINTL* ptlPopupPt, 
		ULONG ulMenuType, 
		ULONG ulReserved);
typedef somTP_WPObject_wpDisplayMenu *somTD_WPObject_wpDisplayMenu;
typedef BOOL   SOMLINK somTP_WPObject_wpDoesObjectMatch(WPObject *somSelf, 
		PVOID pvoidExtendedCriteria);
typedef somTP_WPObject_wpDoesObjectMatch *somTD_WPObject_wpDoesObjectMatch;
typedef MRESULT   SOMLINK somTP_WPObject_wpDraggedOverObject(WPObject *somSelf, 
		WPObject* DraggedOverObject);
typedef somTP_WPObject_wpDraggedOverObject *somTD_WPObject_wpDraggedOverObject;
typedef MRESULT   SOMLINK somTP_WPObject_wpDragOver(WPObject *somSelf, 
		HWND hwndCnr, 
		PDRAGINFO pdrgInfo);
typedef somTP_WPObject_wpDragOver *somTD_WPObject_wpDragOver;
typedef MRESULT   SOMLINK somTP_WPObject_wpDrop(WPObject *somSelf, 
		HWND hwndCnr, 
		PDRAGINFO pdrgInfo, 
		PDRAGITEM pdrgItem);
typedef somTP_WPObject_wpDrop *somTD_WPObject_wpDrop;
typedef BOOL   SOMLINK somTP_WPObject_wpDroppedOnObject(WPObject *somSelf, 
		WPObject* DroppedOnObject);
typedef somTP_WPObject_wpDroppedOnObject *somTD_WPObject_wpDroppedOnObject;
typedef MRESULT   SOMLINK somTP_WPObject_wpEndConversation(WPObject *somSelf, 
		ULONG ulItemID, 
		ULONG flResult);
typedef somTP_WPObject_wpEndConversation *somTD_WPObject_wpEndConversation;
typedef ULONG   SOMLINK somTP_WPObject_wpFilterPopupMenu(WPObject *somSelf, 
		ULONG ulFlags, 
		HWND hwndCnr, 
		BOOL fMultiSelect);
typedef somTP_WPObject_wpFilterPopupMenu *somTD_WPObject_wpFilterPopupMenu;
typedef BOOL   SOMLINK somTP_WPObject_wpFilterMenu(WPObject *somSelf, 
		FILTERFLAGS* pFlags, 
		HWND hwndCnr, 
		BOOL fMultiSelect, 
		ULONG ulMenuType, 
		ULONG ulView, 
		ULONG ulReserved);
typedef somTP_WPObject_wpFilterMenu *somTD_WPObject_wpFilterMenu;
typedef PUSEITEM   SOMLINK somTP_WPObject_wpFindUseItem(WPObject *somSelf, 
		ULONG type, 
		PUSEITEM pCurrentItem);
typedef somTP_WPObject_wpFindUseItem *somTD_WPObject_wpFindUseItem;
typedef BOOL   SOMLINK somTP_WPObject_wpFormatDragItem(WPObject *somSelf, 
		PDRAGITEM pdrgItem);
typedef somTP_WPObject_wpFormatDragItem *somTD_WPObject_wpFormatDragItem;
typedef BOOL   SOMLINK somTP_WPObject_wpFree(WPObject *somSelf);
typedef somTP_WPObject_wpFree *somTD_WPObject_wpFree;
typedef BOOL   SOMLINK somTP_WPObject_wpFreeMem(WPObject *somSelf, 
		PBYTE pByte);
typedef somTP_WPObject_wpFreeMem *somTD_WPObject_wpFreeMem;
typedef BOOL   SOMLINK somTP_WPObject_wpHide(WPObject *somSelf);
typedef somTP_WPObject_wpHide *somTD_WPObject_wpHide;
typedef void   SOMLINK somTP_WPObject_wpInitData(WPObject *somSelf);
typedef somTP_WPObject_wpInitData *somTD_WPObject_wpInitData;
typedef BOOL   SOMLINK somTP_WPObject_wpInsertPopupMenuItems(WPObject *somSelf, 
		HWND hwndMenu, 
		ULONG iPosition, 
		HMODULE hmod, 
		ULONG MenuID, 
		ULONG SubMenuID);
typedef somTP_WPObject_wpInsertPopupMenuItems *somTD_WPObject_wpInsertPopupMenuItems;
typedef BOOL   SOMLINK somTP_WPObject_wpInsertMenuItems(WPObject *somSelf, 
		HWND hwndMenu, 
		ULONG iPosition, 
		HMODULE hmod, 
		ULONG MenuID, 
		ULONG SubMenuID);
typedef somTP_WPObject_wpInsertMenuItems *somTD_WPObject_wpInsertMenuItems;
typedef ULONG   SOMLINK somTP_WPObject_wpInsertSettingsPage(WPObject *somSelf, 
		HWND hwndNotebook, 
		PPAGEINFO ppageinfo);
typedef somTP_WPObject_wpInsertSettingsPage *somTD_WPObject_wpInsertSettingsPage;
typedef BOOL   SOMLINK somTP_WPObject_wpMenuItemHelpSelected(WPObject *somSelf, 
		ULONG MenuId);
typedef somTP_WPObject_wpMenuItemHelpSelected *somTD_WPObject_wpMenuItemHelpSelected;
typedef BOOL   SOMLINK somTP_WPObject_wpMenuItemSelected(WPObject *somSelf, 
		HWND hwndFrame, 
		ULONG ulMenuId);
typedef somTP_WPObject_wpMenuItemSelected *somTD_WPObject_wpMenuItemSelected;
typedef BOOL   SOMLINK somTP_WPObject_wpModifyPopupMenu(WPObject *somSelf, 
		HWND hwndMenu, 
		HWND hwndCnr, 
		ULONG iPosition);
typedef somTP_WPObject_wpModifyPopupMenu *somTD_WPObject_wpModifyPopupMenu;
typedef BOOL   SOMLINK somTP_WPObject_wpModifyMenu(WPObject *somSelf, 
		HWND hwndMenu, 
		HWND hwndCnr, 
		ULONG iPosition, 
		ULONG ulMenuType, 
		ULONG ulView, 
		ULONG ulReserved);
typedef somTP_WPObject_wpModifyMenu *somTD_WPObject_wpModifyMenu;
typedef BOOL   SOMLINK somTP_WPObject_wpMoveObject(WPObject *somSelf, 
		WPFolder* Folder);
typedef somTP_WPObject_wpMoveObject *somTD_WPObject_wpMoveObject;
typedef HWND   SOMLINK somTP_WPObject_wpOpen(WPObject *somSelf, 
		HWND hwndCnr, 
		ULONG ulView, 
		ULONG param);
typedef somTP_WPObject_wpOpen *somTD_WPObject_wpOpen;
typedef BOOL   SOMLINK somTP_WPObject_wpPrintObject(WPObject *somSelf, 
		PPRINTDEST pPrintDest, 
		ULONG ulReserved);
typedef somTP_WPObject_wpPrintObject *somTD_WPObject_wpPrintObject;
typedef ULONG   SOMLINK somTP_WPObject_wpQueryConcurrentView(WPObject *somSelf);
typedef somTP_WPObject_wpQueryConcurrentView *somTD_WPObject_wpQueryConcurrentView;
typedef ULONG   SOMLINK somTP_WPObject_wpQueryButtonAppearance(WPObject *somSelf);
typedef somTP_WPObject_wpQueryButtonAppearance *somTD_WPObject_wpQueryButtonAppearance;
typedef ULONG   SOMLINK somTP_WPObject_wpQueryConfirmations(WPObject *somSelf);
typedef somTP_WPObject_wpQueryConfirmations *somTD_WPObject_wpQueryConfirmations;
typedef BOOL   SOMLINK somTP_WPObject_wpQueryDefaultHelp(WPObject *somSelf, 
		PULONG pHelpPanelId, 
		PSZ HelpLibrary);
typedef somTP_WPObject_wpQueryDefaultHelp *somTD_WPObject_wpQueryDefaultHelp;
typedef ULONG   SOMLINK somTP_WPObject_wpQueryDefaultView(WPObject *somSelf);
typedef somTP_WPObject_wpQueryDefaultView *somTD_WPObject_wpQueryDefaultView;
typedef ULONG   SOMLINK somTP_WPObject_wpQueryDetailsData(WPObject *somSelf, 
		PVOID* ppDetailsData, 
		PULONG pcp);
typedef somTP_WPObject_wpQueryDetailsData *somTD_WPObject_wpQueryDetailsData;
typedef ULONG   SOMLINK somTP_WPObject_wpQueryError(WPObject *somSelf);
typedef somTP_WPObject_wpQueryError *somTD_WPObject_wpQueryError;
typedef BOOL   SOMLINK somTP_WPObject_wpSetFolder(WPObject *somSelf, 
		WPObject* container);
typedef somTP_WPObject_wpSetFolder *somTD_WPObject_wpSetFolder;
typedef WPObject*   SOMLINK somTP_WPObject_wpQueryFolder(WPObject *somSelf);
typedef somTP_WPObject_wpQueryFolder *somTD_WPObject_wpQueryFolder;
typedef HPOINTER   SOMLINK somTP_WPObject_wpQueryIcon(WPObject *somSelf);
typedef somTP_WPObject_wpQueryIcon *somTD_WPObject_wpQueryIcon;
typedef ULONG   SOMLINK somTP_WPObject_wpQueryIconData(WPObject *somSelf, 
		PICONINFO pIconInfo);
typedef somTP_WPObject_wpQueryIconData *somTD_WPObject_wpQueryIconData;
typedef ULONG   SOMLINK somTP_WPObject_wpQueryMinWindow(WPObject *somSelf);
typedef somTP_WPObject_wpQueryMinWindow *somTD_WPObject_wpQueryMinWindow;
typedef ULONG   SOMLINK somTP_WPObject_wpQueryNameClashOptions(WPObject *somSelf, 
		ULONG menuID);
typedef somTP_WPObject_wpQueryNameClashOptions *somTD_WPObject_wpQueryNameClashOptions;
typedef ULONG   SOMLINK somTP_WPObject_wpQueryStyle(WPObject *somSelf);
typedef somTP_WPObject_wpQueryStyle *somTD_WPObject_wpQueryStyle;
typedef BOOL32   SOMLINK somTP_WPObject_wpSetTaskRec(WPObject *somSelf, 
		PTASKREC pNew, 
		PTASKREC pOld);
typedef somTP_WPObject_wpSetTaskRec *somTD_WPObject_wpSetTaskRec;
typedef PTASKREC   SOMLINK somTP_WPObject_wpFindTaskRec(WPObject *somSelf);
typedef somTP_WPObject_wpFindTaskRec *somTD_WPObject_wpFindTaskRec;
typedef PSZ   SOMLINK somTP_WPObject_wpQueryTitle(WPObject *somSelf);
typedef somTP_WPObject_wpQueryTitle *somTD_WPObject_wpQueryTitle;
typedef BOOL   SOMLINK somTP_WPObject_wpRegisterView(WPObject *somSelf, 
		HWND hwndFrame, 
		PSZ pszViewTitle);
typedef somTP_WPObject_wpRegisterView *somTD_WPObject_wpRegisterView;
typedef ULONG   SOMLINK somTP_WPObject_wpReleaseObjectMutexSem(WPObject *somSelf);
typedef somTP_WPObject_wpReleaseObjectMutexSem *somTD_WPObject_wpReleaseObjectMutexSem;
typedef MRESULT   SOMLINK somTP_WPObject_wpRender(WPObject *somSelf, 
		PDRAGTRANSFER pdxfer);
typedef somTP_WPObject_wpRender *somTD_WPObject_wpRender;
typedef MRESULT   SOMLINK somTP_WPObject_wpRenderComplete(WPObject *somSelf, 
		PDRAGTRANSFER pdxfer, 
		ULONG ulResult);
typedef somTP_WPObject_wpRenderComplete *somTD_WPObject_wpRenderComplete;
typedef BOOL32   SOMLINK somTP_WPObject_wpReplaceObject(WPObject *somSelf, 
		WPObject* targetObject, 
		BOOL32 fMove);
typedef somTP_WPObject_wpReplaceObject *somTD_WPObject_wpReplaceObject;
typedef ULONG   SOMLINK somTP_WPObject_wpRequestObjectMutexSem(WPObject *somSelf, 
		ULONG ulTimeout);
typedef somTP_WPObject_wpRequestObjectMutexSem *somTD_WPObject_wpRequestObjectMutexSem;
typedef BOOL   SOMLINK somTP_WPObject_wpRestore(WPObject *somSelf);
typedef somTP_WPObject_wpRestore *somTD_WPObject_wpRestore;
typedef BOOL   SOMLINK somTP_WPObject_wpRestoreData(WPObject *somSelf, 
		PSZ pszClass, 
		ULONG ulKey, 
		PBYTE pValue, 
		PULONG pcbValue);
typedef somTP_WPObject_wpRestoreData *somTD_WPObject_wpRestoreData;
typedef BOOL   SOMLINK somTP_WPObject_wpRestoreLong(WPObject *somSelf, 
		PSZ pszClass, 
		ULONG ulKey, 
		PULONG pulValue);
typedef somTP_WPObject_wpRestoreLong *somTD_WPObject_wpRestoreLong;
typedef BOOL   SOMLINK somTP_WPObject_wpRestoreState(WPObject *somSelf, 
		ULONG ulReserved);
typedef somTP_WPObject_wpRestoreState *somTD_WPObject_wpRestoreState;
typedef BOOL   SOMLINK somTP_WPObject_wpRestoreString(WPObject *somSelf, 
		PSZ pszClass, 
		ULONG ulKey, 
		PSZ pszValue, 
		PULONG pcbValue);
typedef somTP_WPObject_wpRestoreString *somTD_WPObject_wpRestoreString;
typedef BOOL   SOMLINK somTP_WPObject_wpSaveData(WPObject *somSelf, 
		PSZ pszClass, 
		ULONG ulKey, 
		PBYTE pValue, 
		ULONG cbValue);
typedef somTP_WPObject_wpSaveData *somTD_WPObject_wpSaveData;
typedef BOOL   SOMLINK somTP_WPObject_wpSaveImmediate(WPObject *somSelf);
typedef somTP_WPObject_wpSaveImmediate *somTD_WPObject_wpSaveImmediate;
typedef BOOL   SOMLINK somTP_WPObject_wpSaveDeferred(WPObject *somSelf);
typedef somTP_WPObject_wpSaveDeferred *somTD_WPObject_wpSaveDeferred;
typedef BOOL   SOMLINK somTP_WPObject_wpSaveLong(WPObject *somSelf, 
		PSZ pszClass, 
		ULONG ulKey, 
		ULONG ulValue);
typedef somTP_WPObject_wpSaveLong *somTD_WPObject_wpSaveLong;
typedef BOOL   SOMLINK somTP_WPObject_wpSaveState(WPObject *somSelf);
typedef somTP_WPObject_wpSaveState *somTD_WPObject_wpSaveState;
typedef BOOL   SOMLINK somTP_WPObject_wpSaveString(WPObject *somSelf, 
		PSZ pszClass, 
		ULONG ulKey, 
		PSZ pszValue);
typedef somTP_WPObject_wpSaveString *somTD_WPObject_wpSaveString;
typedef BOOL   SOMLINK somTP_WPObject_wpScanSetupString(WPObject *somSelf, 
		PSZ pszSetupString, 
		PSZ pszKey, 
		PSZ pszValue, 
		PULONG pcbValue);
typedef somTP_WPObject_wpScanSetupString *somTD_WPObject_wpScanSetupString;
typedef void   SOMLINK somTP_WPObject_wpSetConcurrentView(WPObject *somSelf, 
		ULONG ulCCView);
typedef somTP_WPObject_wpSetConcurrentView *somTD_WPObject_wpSetConcurrentView;
typedef void   SOMLINK somTP_WPObject_wpSetButtonAppearance(WPObject *somSelf, 
		ULONG ulButtonType);
typedef somTP_WPObject_wpSetButtonAppearance *somTD_WPObject_wpSetButtonAppearance;
typedef BOOL   SOMLINK somTP_WPObject_wpSetDefaultHelp(WPObject *somSelf, 
		ULONG HelpPanelId, 
		PSZ HelpLibrary);
typedef somTP_WPObject_wpSetDefaultHelp *somTD_WPObject_wpSetDefaultHelp;
typedef BOOL   SOMLINK somTP_WPObject_wpSetDefaultView(WPObject *somSelf, 
		ULONG ulView);
typedef somTP_WPObject_wpSetDefaultView *somTD_WPObject_wpSetDefaultView;
typedef BOOL   SOMLINK somTP_WPObject_wpSetError(WPObject *somSelf, 
		ULONG ulErrorId);
typedef somTP_WPObject_wpSetError *somTD_WPObject_wpSetError;
typedef SGID   SOMLINK somTP_WPObject_wpQueryScreenGroupID(WPObject *somSelf, 
		SGID sgidPrevSgId);
typedef somTP_WPObject_wpQueryScreenGroupID *somTD_WPObject_wpQueryScreenGroupID;
typedef BOOL   SOMLINK somTP_WPObject_wpSetupOnce(WPObject *somSelf, 
		PSZ pszSetupString);
typedef somTP_WPObject_wpSetupOnce *somTD_WPObject_wpSetupOnce;
typedef BOOL   SOMLINK somTP_WPObject_wpSetIcon(WPObject *somSelf, 
		HPOINTER hptrNewIcon);
typedef somTP_WPObject_wpSetIcon *somTD_WPObject_wpSetIcon;
typedef BOOL   SOMLINK somTP_WPObject_wpSetIconData(WPObject *somSelf, 
		PICONINFO pIconInfo);
typedef somTP_WPObject_wpSetIconData *somTD_WPObject_wpSetIconData;
typedef void   SOMLINK somTP_WPObject_wpSetMinWindow(WPObject *somSelf, 
		ULONG ulMinWindow);
typedef somTP_WPObject_wpSetMinWindow *somTD_WPObject_wpSetMinWindow;
typedef BOOL   SOMLINK somTP_WPObject_wpModifyStyle(WPObject *somSelf, 
		ULONG ulStyleFlags, 
		ULONG ulStyleMask);
typedef somTP_WPObject_wpModifyStyle *somTD_WPObject_wpModifyStyle;
typedef BOOL   SOMLINK somTP_WPObject_wpSetTitle(WPObject *somSelf, 
		PSZ pszNewTitle);
typedef somTP_WPObject_wpSetTitle *somTD_WPObject_wpSetTitle;
typedef BOOL   SOMLINK somTP_WPObject_wpSetup(WPObject *somSelf, 
		PSZ pszSetupString);
typedef somTP_WPObject_wpSetup *somTD_WPObject_wpSetup;
typedef BOOL   SOMLINK somTP_WPObject_wpSwitchTo(WPObject *somSelf, 
		ULONG View);
typedef somTP_WPObject_wpSwitchTo *somTD_WPObject_wpSwitchTo;
typedef void   SOMLINK somTP_WPObject_wpUnInitData(WPObject *somSelf);
typedef somTP_WPObject_wpUnInitData *somTD_WPObject_wpUnInitData;
typedef HWND   SOMLINK somTP_WPObject_wpViewObject(WPObject *somSelf, 
		HWND hwndCnr, 
		ULONG ulView, 
		ULONG param);
typedef somTP_WPObject_wpViewObject *somTD_WPObject_wpViewObject;
typedef ULONG   SOMLINK somTP_WPObject_wpQueryTrueStyle(WPObject *somSelf);
typedef somTP_WPObject_wpQueryTrueStyle *somTD_WPObject_wpQueryTrueStyle;
typedef HOBJECT   SOMLINK somTP_WPObject_wpQueryHandle(WPObject *somSelf);
typedef somTP_WPObject_wpQueryHandle *somTD_WPObject_wpQueryHandle;
typedef BOOL   SOMLINK somTP_WPObject_wpUnlockObject(WPObject *somSelf);
typedef somTP_WPObject_wpUnlockObject *somTD_WPObject_wpUnlockObject;
typedef void   SOMLINK somTP_WPObject_wpObjectReady(WPObject *somSelf, 
		ULONG ulCode, 
		WPObject* refObject);
typedef somTP_WPObject_wpObjectReady *somTD_WPObject_wpObjectReady;
typedef BOOL   SOMLINK somTP_WPObject_wpIsObjectInitialized(WPObject *somSelf);
typedef somTP_WPObject_wpIsObjectInitialized *somTD_WPObject_wpIsObjectInitialized;
typedef WPObject*   SOMLINK somTP_WPObject_wpCreateShadowObjectExt(WPObject *somSelf, 
		WPFolder* Folder, 
		BOOL fLock, 
		PSZ pszSetup, 
		M_WPObject* shadowClass);
typedef somTP_WPObject_wpCreateShadowObjectExt *somTD_WPObject_wpCreateShadowObjectExt;
typedef BOOL   SOMLINK somTP_WPObject_wpCnrDeleteUseItem(WPObject *somSelf, 
		HWND hwndCnr);
typedef somTP_WPObject_wpCnrDeleteUseItem *somTD_WPObject_wpCnrDeleteUseItem;
typedef BOOL   SOMLINK somTP_WPObject_wpIsDeleteable(WPObject *somSelf);
typedef somTP_WPObject_wpIsDeleteable *somTD_WPObject_wpIsDeleteable;
typedef PMINIRECORDCORE   SOMLINK somTP_WPObject_wpQueryCoreRecord(WPObject *somSelf);
typedef somTP_WPObject_wpQueryCoreRecord *somTD_WPObject_wpQueryCoreRecord;
typedef BOOL   SOMLINK somTP_WPObject_wpSetObjectID(WPObject *somSelf, 
		PSZ pszObjectID);
typedef somTP_WPObject_wpSetObjectID *somTD_WPObject_wpSetObjectID;
typedef PSZ   SOMLINK somTP_WPObject_wpQueryObjectID(WPObject *somSelf);
typedef somTP_WPObject_wpQueryObjectID *somTD_WPObject_wpQueryObjectID;
typedef BOOL   SOMLINK somTP_WPObject_wpSetDefaultIconPos(WPObject *somSelf, 
		PPOINTL pPointl);
typedef somTP_WPObject_wpSetDefaultIconPos *somTD_WPObject_wpSetDefaultIconPos;
typedef BOOL   SOMLINK somTP_WPObject_wpQueryDefaultIconPos(WPObject *somSelf, 
		PPOINTL pPointl);
typedef somTP_WPObject_wpQueryDefaultIconPos *somTD_WPObject_wpQueryDefaultIconPos;
typedef void   SOMLINK somTP_WPObject_wpCnrRefreshDetails(WPObject *somSelf);
typedef somTP_WPObject_wpCnrRefreshDetails *somTD_WPObject_wpCnrRefreshDetails;
typedef PVIEWITEM   SOMLINK somTP_WPObject_wpFindViewItem(WPObject *somSelf, 
		ULONG flViews, 
		PVIEWITEM pCurrentItem);
typedef somTP_WPObject_wpFindViewItem *somTD_WPObject_wpFindViewItem;
typedef void   SOMLINK somTP_WPObject_wpLockObject(WPObject *somSelf);
typedef somTP_WPObject_wpLockObject *somTD_WPObject_wpLockObject;
typedef BOOL   SOMLINK somTP_WPObject_wpIsLocked(WPObject *somSelf);
typedef somTP_WPObject_wpIsLocked *somTD_WPObject_wpIsLocked;
typedef PULONG   SOMLINK somTP_WPObject_wpQueryContainerFlagPtr(WPObject *somSelf);
typedef somTP_WPObject_wpQueryContainerFlagPtr *somTD_WPObject_wpQueryContainerFlagPtr;
typedef ULONG   SOMLINK somTP_WPObject_wpWaitForClose(WPObject *somSelf, 
		LHANDLE lhView, 
		ULONG ulViews, 
		long lTimeOut, 
		BOOL bAutoClose);
typedef somTP_WPObject_wpWaitForClose *somTD_WPObject_wpWaitForClose;
typedef BOOL   SOMLINK somTP_WPObject_wpSetMenuStyle(WPObject *somSelf, 
		ULONG ulStyle);
typedef somTP_WPObject_wpSetMenuStyle *somTD_WPObject_wpSetMenuStyle;
typedef ULONG   SOMLINK somTP_WPObject_wpQueryMenuStyle(WPObject *somSelf);
typedef somTP_WPObject_wpQueryMenuStyle *somTD_WPObject_wpQueryMenuStyle;
typedef BOOL   SOMLINK somTP_WPObject_wpIdentify(WPObject *somSelf, 
		PSZ pszIdentity);
typedef somTP_WPObject_wpIdentify *somTD_WPObject_wpIdentify;
typedef BOOL   SOMLINK somTP_WPObject_wpSetStyle(WPObject *somSelf, 
		ULONG ulNewStyle);
typedef somTP_WPObject_wpSetStyle *somTD_WPObject_wpSetStyle;

/*
 * -- Typedefs for Reintroduced Wrapper Methods
 */
typedef M_WPObject*   SOMLINK somTP_WPObject_somGetClass(WPObject *somSelf);
typedef somTP_WPObject_somGetClass *somTD_WPObject_somGetClass;
}

#endif /* WPObject_API */


/*
 * -- This emitter treats Method Tokens as Thunks by default.
 * -- Use the sc modifier "nothunks" to change this default
 */
#undef somresolve_
#define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))

/*
 * -- The C++ Wrapper Class for WPObject
 */
class WPObject : public SOMObject
{
public:

// WPObject::new creates the class object if necessary, and then uses somNewNoInit
// to allocate memory and create the object. Initialization is in ctors.
void *operator new(size_t)
{
   if (!_WPObject) WPObjectNewClass(WPObject_MajorVersion,WPObject_MinorVersion);
   return (void*)
      SOM_Resolve(_WPObject,SOMClass,somNewNoInit)
         ((SOMClass *)((void*)_WPObject));
}

// WPObject::delete uses somDestruct.
void operator delete(void * obj)
{
   if (obj && *(void**)obj) {
      SOM_Resolve(obj,SOMObject,somDestruct)
         ((SOMObject*)obj, 1, 0);
   }
}

WPObject& operator=(WPObject& fromObj)
{
   this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
   return *this;
}

WPObject()
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (WPObjectCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultInit(0);
}

WPObject(WPObject* fromObj)
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (WPObjectCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
}

WPObject(const WPObject* fromObj)
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (WPObjectCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultConstCopyInit(0,((SOMObject*)((void*)fromObj)));
}


/* method: wpAddObjectGeneralPage */
ULONG   wpAddObjectGeneralPage(HWND hwndNotebook)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpAddObjectGeneralPage)
	(this,hwndNotebook);
}


/* method: wpAddObjectGeneralPage2 */
ULONG   wpAddObjectGeneralPage2(HWND hwndNotebook)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpAddObjectGeneralPage2)
	(this,hwndNotebook);
}


/* method: wpAddObjectWindowPage */
ULONG   wpAddObjectWindowPage(HWND hwndNotebook)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpAddObjectWindowPage)
	(this,hwndNotebook);
}


/* method: wpAddSettingsPages */
BOOL   wpAddSettingsPages(HWND hwndNotebook)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpAddSettingsPages)
	(this,hwndNotebook);
}


/* method: wpAddToObjUseList */
BOOL   wpAddToObjUseList(PUSEITEM pUseItem)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpAddToObjUseList)
	(this,pUseItem);
}


/* method: wpAllocMem */
PBYTE   wpAllocMem(ULONG cbBytes, 
		PULONG prc)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpAllocMem)
	(this,cbBytes,prc);
}


/* method: wpAppendObject */
BOOL32   wpAppendObject(WPObject* targetObject, 
		BOOL32 fMove)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpAppendObject)
	(this,targetObject,fMove);
}


/* method: wpAssertObjectMutexSem */
BOOL   wpAssertObjectMutexSem()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpAssertObjectMutexSem)
	(this);
}


/* method: wpClose */
BOOL   wpClose()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpClose)
	(this);
}


/* method: wpCnrInsertObject */
PMINIRECORDCORE   wpCnrInsertObject(HWND hwndCnr, 
		PPOINTL pptlIcon, 
		PMINIRECORDCORE preccParent, 
		PRECORDINSERT pRecInsert)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpCnrInsertObject)
	(this,hwndCnr,pptlIcon,preccParent,pRecInsert);
}


/* method: wpCnrRemoveObject */
BOOL   wpCnrRemoveObject(HWND hwndCnr)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpCnrRemoveObject)
	(this,hwndCnr);
}


/* method: wpCnrSetEmphasis */
BOOL   wpCnrSetEmphasis(ULONG ulEmphasisAttr, 
		BOOL fTurnOn)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpCnrSetEmphasis)
	(this,ulEmphasisAttr,fTurnOn);
}


/* method: wpConfirmDelete */
ULONG   wpConfirmDelete(ULONG fConfirmations)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpConfirmDelete)
	(this,fConfirmations);
}


/* method: wpConfirmObjectTitle */
ULONG   wpConfirmObjectTitle(WPFolder* Folder, 
		WPObject** ppDuplicate, 
		PSZ pszTitle, 
		ULONG cbTitle, 
		ULONG menuID)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpConfirmObjectTitle)
	(this,Folder,ppDuplicate,pszTitle,cbTitle,menuID);
}


/* method: wpCopiedFromTemplate */
void   wpCopiedFromTemplate()
{
   SOM_ResolveD(this,WPObject,WPObject,wpCopiedFromTemplate)
	(this);
}


/* method: wpCopyObject */
WPObject*   wpCopyObject(WPFolder* Folder, 
		BOOL fLock)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpCopyObject)
	(this,Folder,fLock);
}


/* method: wpCreateAnother */
WPObject*   wpCreateAnother(PSZ pszTitle, 
		PSZ pszSetupEnv, 
		WPFolder* Folder)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpCreateAnother)
	(this,pszTitle,pszSetupEnv,Folder);
}


/* method: wpCreateFromTemplate */
WPObject*   wpCreateFromTemplate(WPFolder* folder, 
		BOOL fLock)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpCreateFromTemplate)
	(this,folder,fLock);
}


/* method: wpCreateShadowObject */
WPObject*   wpCreateShadowObject(WPFolder* Folder, 
		BOOL fLock)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpCreateShadowObject)
	(this,Folder,fLock);
}


/* method: wpDelete */
ULONG   wpDelete(ULONG fConfirmations)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpDelete)
	(this,fConfirmations);
}


/* method: wpDeleteFromObjUseList */
BOOL   wpDeleteFromObjUseList(PUSEITEM pUseItem)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpDeleteFromObjUseList)
	(this,pUseItem);
}


/* method: wpDisplayHelp */
BOOL   wpDisplayHelp(ULONG HelpPanelId, 
		PSZ HelpLibrary)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpDisplayHelp)
	(this,HelpPanelId,HelpLibrary);
}


/* method: wpDisplayMenu */
HWND   wpDisplayMenu(HWND hwndOwner, 
		HWND hwndClient, 
		POINTL* ptlPopupPt, 
		ULONG ulMenuType, 
		ULONG ulReserved)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpDisplayMenu)
	(this,hwndOwner,hwndClient,ptlPopupPt,ulMenuType,ulReserved);
}


/* method: wpDoesObjectMatch */
BOOL   wpDoesObjectMatch(PVOID pvoidExtendedCriteria)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpDoesObjectMatch)
	(this,pvoidExtendedCriteria);
}


/* method: wpDraggedOverObject */
MRESULT   wpDraggedOverObject(WPObject* DraggedOverObject)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpDraggedOverObject)
	(this,DraggedOverObject);
}


/* method: wpDragOver */
MRESULT   wpDragOver(HWND hwndCnr, 
		PDRAGINFO pdrgInfo)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpDragOver)
	(this,hwndCnr,pdrgInfo);
}


/* method: wpDrop */
MRESULT   wpDrop(HWND hwndCnr, 
		PDRAGINFO pdrgInfo, 
		PDRAGITEM pdrgItem)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpDrop)
	(this,hwndCnr,pdrgInfo,pdrgItem);
}


/* method: wpDroppedOnObject */
BOOL   wpDroppedOnObject(WPObject* DroppedOnObject)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpDroppedOnObject)
	(this,DroppedOnObject);
}


/* method: wpEndConversation */
MRESULT   wpEndConversation(ULONG ulItemID, 
		ULONG flResult)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpEndConversation)
	(this,ulItemID,flResult);
}


/* method: wpFilterPopupMenu */
ULONG   wpFilterPopupMenu(ULONG ulFlags, 
		HWND hwndCnr, 
		BOOL fMultiSelect)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpFilterPopupMenu)
	(this,ulFlags,hwndCnr,fMultiSelect);
}


/* method: wpFilterMenu */
BOOL   wpFilterMenu(FILTERFLAGS* pFlags, 
		HWND hwndCnr, 
		BOOL fMultiSelect, 
		ULONG ulMenuType, 
		ULONG ulView, 
		ULONG ulReserved)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpFilterMenu)
	(this,pFlags,hwndCnr,fMultiSelect,ulMenuType,ulView,ulReserved);
}


/* method: wpFindUseItem */
PUSEITEM   wpFindUseItem(ULONG type, 
		PUSEITEM pCurrentItem)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpFindUseItem)
	(this,type,pCurrentItem);
}


/* method: wpFormatDragItem */
BOOL   wpFormatDragItem(PDRAGITEM pdrgItem)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpFormatDragItem)
	(this,pdrgItem);
}


/* method: wpFree */
BOOL   wpFree()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpFree)
	(this);
}


/* method: wpFreeMem */
BOOL   wpFreeMem(PBYTE pByte)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpFreeMem)
	(this,pByte);
}


/* method: wpHide */
BOOL   wpHide()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpHide)
	(this);
}


/* method: wpInitData */
void   wpInitData()
{
   SOM_ResolveD(this,WPObject,WPObject,wpInitData)
	(this);
}


/* method: wpInsertPopupMenuItems */
BOOL   wpInsertPopupMenuItems(HWND hwndMenu, 
		ULONG iPosition, 
		HMODULE hmod, 
		ULONG MenuID, 
		ULONG SubMenuID)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpInsertPopupMenuItems)
	(this,hwndMenu,iPosition,hmod,MenuID,SubMenuID);
}


/* method: wpInsertMenuItems */
BOOL   wpInsertMenuItems(HWND hwndMenu, 
		ULONG iPosition, 
		HMODULE hmod, 
		ULONG MenuID, 
		ULONG SubMenuID)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpInsertMenuItems)
	(this,hwndMenu,iPosition,hmod,MenuID,SubMenuID);
}


/* method: wpInsertSettingsPage */
ULONG   wpInsertSettingsPage(HWND hwndNotebook, 
		PPAGEINFO ppageinfo)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpInsertSettingsPage)
	(this,hwndNotebook,ppageinfo);
}


/* method: wpMenuItemHelpSelected */
BOOL   wpMenuItemHelpSelected(ULONG MenuId)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpMenuItemHelpSelected)
	(this,MenuId);
}


/* method: wpMenuItemSelected */
BOOL   wpMenuItemSelected(HWND hwndFrame, 
		ULONG ulMenuId)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpMenuItemSelected)
	(this,hwndFrame,ulMenuId);
}


/* method: wpModifyPopupMenu */
BOOL   wpModifyPopupMenu(HWND hwndMenu, 
		HWND hwndCnr, 
		ULONG iPosition)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpModifyPopupMenu)
	(this,hwndMenu,hwndCnr,iPosition);
}


/* method: wpModifyMenu */
BOOL   wpModifyMenu(HWND hwndMenu, 
		HWND hwndCnr, 
		ULONG iPosition, 
		ULONG ulMenuType, 
		ULONG ulView, 
		ULONG ulReserved)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpModifyMenu)
	(this,hwndMenu,hwndCnr,iPosition,ulMenuType,ulView,ulReserved);
}


/* method: wpMoveObject */
BOOL   wpMoveObject(WPFolder* Folder)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpMoveObject)
	(this,Folder);
}


/* method: wpOpen */
HWND   wpOpen(HWND hwndCnr, 
		ULONG ulView, 
		ULONG param)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpOpen)
	(this,hwndCnr,ulView,param);
}


/* method: wpPrintObject */
BOOL   wpPrintObject(PPRINTDEST pPrintDest, 
		ULONG ulReserved)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpPrintObject)
	(this,pPrintDest,ulReserved);
}


/* method: wpQueryConcurrentView */
ULONG   wpQueryConcurrentView()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryConcurrentView)
	(this);
}


/* method: wpQueryButtonAppearance */
ULONG   wpQueryButtonAppearance()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryButtonAppearance)
	(this);
}


/* method: wpQueryConfirmations */
ULONG   wpQueryConfirmations()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryConfirmations)
	(this);
}


/* method: wpQueryDefaultHelp */
BOOL   wpQueryDefaultHelp(PULONG pHelpPanelId, 
		PSZ HelpLibrary)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryDefaultHelp)
	(this,pHelpPanelId,HelpLibrary);
}


/* method: wpQueryDefaultView */
ULONG   wpQueryDefaultView()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryDefaultView)
	(this);
}


/* method: wpQueryDetailsData */
ULONG   wpQueryDetailsData(PVOID* ppDetailsData, 
		PULONG pcp)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryDetailsData)
	(this,ppDetailsData,pcp);
}


/* method: wpQueryError */
ULONG   wpQueryError()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryError)
	(this);
}


/* method: wpSetFolder */
BOOL   wpSetFolder(WPObject* container)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetFolder)
	(this,container);
}


/* method: wpQueryFolder */
WPObject*   wpQueryFolder()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryFolder)
	(this);
}


/* method: wpQueryIcon */
HPOINTER   wpQueryIcon()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryIcon)
	(this);
}


/* method: wpQueryIconData */
ULONG   wpQueryIconData(PICONINFO pIconInfo)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryIconData)
	(this,pIconInfo);
}


/* method: wpQueryMinWindow */
ULONG   wpQueryMinWindow()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryMinWindow)
	(this);
}


/* method: wpQueryNameClashOptions */
ULONG   wpQueryNameClashOptions(ULONG menuID)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryNameClashOptions)
	(this,menuID);
}


/* method: wpQueryStyle */
ULONG   wpQueryStyle()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryStyle)
	(this);
}


/* method: wpSetTaskRec */
BOOL32   wpSetTaskRec(PTASKREC pNew, 
		PTASKREC pOld)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetTaskRec)
	(this,pNew,pOld);
}


/* method: wpFindTaskRec */
PTASKREC   wpFindTaskRec()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpFindTaskRec)
	(this);
}


/* method: wpQueryTitle */
PSZ   wpQueryTitle()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryTitle)
	(this);
}


/* method: wpRegisterView */
BOOL   wpRegisterView(HWND hwndFrame, 
		PSZ pszViewTitle)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpRegisterView)
	(this,hwndFrame,pszViewTitle);
}


/* method: wpReleaseObjectMutexSem */
ULONG   wpReleaseObjectMutexSem()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpReleaseObjectMutexSem)
	(this);
}


/* method: wpRender */
MRESULT   wpRender(PDRAGTRANSFER pdxfer)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpRender)
	(this,pdxfer);
}


/* method: wpRenderComplete */
MRESULT   wpRenderComplete(PDRAGTRANSFER pdxfer, 
		ULONG ulResult)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpRenderComplete)
	(this,pdxfer,ulResult);
}


/* method: wpReplaceObject */
BOOL32   wpReplaceObject(WPObject* targetObject, 
		BOOL32 fMove)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpReplaceObject)
	(this,targetObject,fMove);
}


/* method: wpRequestObjectMutexSem */
ULONG   wpRequestObjectMutexSem(ULONG ulTimeout)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpRequestObjectMutexSem)
	(this,ulTimeout);
}


/* method: wpRestore */
BOOL   wpRestore()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpRestore)
	(this);
}


/* method: wpRestoreData */
BOOL   wpRestoreData(PSZ pszClass, 
		ULONG ulKey, 
		PBYTE pValue, 
		PULONG pcbValue)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpRestoreData)
	(this,pszClass,ulKey,pValue,pcbValue);
}


/* method: wpRestoreLong */
BOOL   wpRestoreLong(PSZ pszClass, 
		ULONG ulKey, 
		PULONG pulValue)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpRestoreLong)
	(this,pszClass,ulKey,pulValue);
}


/* method: wpRestoreState */
BOOL   wpRestoreState(ULONG ulReserved)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpRestoreState)
	(this,ulReserved);
}


/* method: wpRestoreString */
BOOL   wpRestoreString(PSZ pszClass, 
		ULONG ulKey, 
		PSZ pszValue, 
		PULONG pcbValue)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpRestoreString)
	(this,pszClass,ulKey,pszValue,pcbValue);
}


/* method: wpSaveData */
BOOL   wpSaveData(PSZ pszClass, 
		ULONG ulKey, 
		PBYTE pValue, 
		ULONG cbValue)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSaveData)
	(this,pszClass,ulKey,pValue,cbValue);
}


/* method: wpSaveImmediate */
BOOL   wpSaveImmediate()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSaveImmediate)
	(this);
}


/* method: wpSaveDeferred */
BOOL   wpSaveDeferred()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSaveDeferred)
	(this);
}


/* method: wpSaveLong */
BOOL   wpSaveLong(PSZ pszClass, 
		ULONG ulKey, 
		ULONG ulValue)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSaveLong)
	(this,pszClass,ulKey,ulValue);
}


/* method: wpSaveState */
BOOL   wpSaveState()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSaveState)
	(this);
}


/* method: wpSaveString */
BOOL   wpSaveString(PSZ pszClass, 
		ULONG ulKey, 
		PSZ pszValue)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSaveString)
	(this,pszClass,ulKey,pszValue);
}


/* method: wpScanSetupString */
BOOL   wpScanSetupString(PSZ pszSetupString, 
		PSZ pszKey, 
		PSZ pszValue, 
		PULONG pcbValue)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpScanSetupString)
	(this,pszSetupString,pszKey,pszValue,pcbValue);
}


/* method: wpSetConcurrentView */
void   wpSetConcurrentView(ULONG ulCCView)
{
   SOM_ResolveD(this,WPObject,WPObject,wpSetConcurrentView)
	(this,ulCCView);
}


/* method: wpSetButtonAppearance */
void   wpSetButtonAppearance(ULONG ulButtonType)
{
   SOM_ResolveD(this,WPObject,WPObject,wpSetButtonAppearance)
	(this,ulButtonType);
}


/* method: wpSetDefaultHelp */
BOOL   wpSetDefaultHelp(ULONG HelpPanelId, 
		PSZ HelpLibrary)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetDefaultHelp)
	(this,HelpPanelId,HelpLibrary);
}


/* method: wpSetDefaultView */
BOOL   wpSetDefaultView(ULONG ulView)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetDefaultView)
	(this,ulView);
}


/* method: wpSetError */
BOOL   wpSetError(ULONG ulErrorId)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetError)
	(this,ulErrorId);
}


/* method: wpQueryScreenGroupID */
SGID   wpQueryScreenGroupID(SGID sgidPrevSgId)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryScreenGroupID)
	(this,sgidPrevSgId);
}


/* method: wpSetupOnce */
BOOL   wpSetupOnce(PSZ pszSetupString)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetupOnce)
	(this,pszSetupString);
}


/* method: wpSetIcon */
BOOL   wpSetIcon(HPOINTER hptrNewIcon)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetIcon)
	(this,hptrNewIcon);
}


/* method: wpSetIconData */
BOOL   wpSetIconData(PICONINFO pIconInfo)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetIconData)
	(this,pIconInfo);
}


/* method: wpSetMinWindow */
void   wpSetMinWindow(ULONG ulMinWindow)
{
   SOM_ResolveD(this,WPObject,WPObject,wpSetMinWindow)
	(this,ulMinWindow);
}


/* method: wpModifyStyle */
BOOL   wpModifyStyle(ULONG ulStyleFlags, 
		ULONG ulStyleMask)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpModifyStyle)
	(this,ulStyleFlags,ulStyleMask);
}


/* method: wpSetTitle */
BOOL   wpSetTitle(PSZ pszNewTitle)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetTitle)
	(this,pszNewTitle);
}


/* method: wpSetup */
BOOL   wpSetup(PSZ pszSetupString)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetup)
	(this,pszSetupString);
}


/* method: wpSwitchTo */
BOOL   wpSwitchTo(ULONG View)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSwitchTo)
	(this,View);
}


/* method: wpUnInitData */
void   wpUnInitData()
{
   SOM_ResolveD(this,WPObject,WPObject,wpUnInitData)
	(this);
}


/* method: wpViewObject */
HWND   wpViewObject(HWND hwndCnr, 
		ULONG ulView, 
		ULONG param)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpViewObject)
	(this,hwndCnr,ulView,param);
}


/* procedure: wpQueryTrueStyle */
static ULONG   wpQueryTrueStyle(WPObject *somSelf)
{
   return ((somTD_WPObject_wpQueryTrueStyle)WPObjectClassData.wpQueryTrueStyle)
	(somSelf);
}


/* method: wpQueryHandle */
HOBJECT   wpQueryHandle()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryHandle)
	(this);
}


/* method: wpUnlockObject */
BOOL   wpUnlockObject()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpUnlockObject)
	(this);
}


/* method: wpObjectReady */
void   wpObjectReady(ULONG ulCode, 
		WPObject* refObject)
{
   SOM_ResolveD(this,WPObject,WPObject,wpObjectReady)
	(this,ulCode,refObject);
}


/* method: wpIsObjectInitialized */
BOOL   wpIsObjectInitialized()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpIsObjectInitialized)
	(this);
}


/* method: wpCreateShadowObjectExt */
WPObject*   wpCreateShadowObjectExt(WPFolder* Folder, 
		BOOL fLock, 
		PSZ pszSetup, 
		M_WPObject* shadowClass)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpCreateShadowObjectExt)
	(this,Folder,fLock,pszSetup,shadowClass);
}


/* method: wpCnrDeleteUseItem */
BOOL   wpCnrDeleteUseItem(HWND hwndCnr)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpCnrDeleteUseItem)
	(this,hwndCnr);
}


/* method: wpIsDeleteable */
BOOL   wpIsDeleteable()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpIsDeleteable)
	(this);
}


/* method: wpQueryCoreRecord */
PMINIRECORDCORE   wpQueryCoreRecord()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryCoreRecord)
	(this);
}


/* method: wpSetObjectID */
BOOL   wpSetObjectID(PSZ pszObjectID)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetObjectID)
	(this,pszObjectID);
}


/* method: wpQueryObjectID */
PSZ   wpQueryObjectID()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryObjectID)
	(this);
}


/* method: wpSetDefaultIconPos */
BOOL   wpSetDefaultIconPos(PPOINTL pPointl)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetDefaultIconPos)
	(this,pPointl);
}


/* method: wpQueryDefaultIconPos */
BOOL   wpQueryDefaultIconPos(PPOINTL pPointl)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryDefaultIconPos)
	(this,pPointl);
}


/* method: wpCnrRefreshDetails */
void   wpCnrRefreshDetails()
{
   SOM_ResolveD(this,WPObject,WPObject,wpCnrRefreshDetails)
	(this);
}


/* method: wpFindViewItem */
PVIEWITEM   wpFindViewItem(ULONG flViews, 
		PVIEWITEM pCurrentItem)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpFindViewItem)
	(this,flViews,pCurrentItem);
}


/* method: wpLockObject */
void   wpLockObject()
{
   SOM_ResolveD(this,WPObject,WPObject,wpLockObject)
	(this);
}


/* method: wpIsLocked */
BOOL   wpIsLocked()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpIsLocked)
	(this);
}


/* method: wpQueryContainerFlagPtr */
PULONG   wpQueryContainerFlagPtr()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryContainerFlagPtr)
	(this);
}


/* method: wpWaitForClose */
ULONG   wpWaitForClose(LHANDLE lhView, 
		ULONG ulViews, 
		long lTimeOut, 
		BOOL bAutoClose)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpWaitForClose)
	(this,lhView,ulViews,lTimeOut,bAutoClose);
}


/* method: wpSetMenuStyle */
BOOL   wpSetMenuStyle(ULONG ulStyle)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetMenuStyle)
	(this,ulStyle);
}


/* method: wpQueryMenuStyle */
ULONG   wpQueryMenuStyle()
{
   return SOM_ResolveD(this,WPObject,WPObject,wpQueryMenuStyle)
	(this);
}


/* method: wpIdentify */
BOOL   wpIdentify(PSZ pszIdentity)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpIdentify)
	(this,pszIdentity);
}


/* method: wpSetStyle */
BOOL   wpSetStyle(ULONG ulNewStyle)
{
   return SOM_ResolveD(this,WPObject,WPObject,wpSetStyle)
	(this,ulNewStyle);
}


/*
 * Reintroduce inherited methods
 */

/* method: somGetClass */
M_WPObject*  somGetClass()
{
/*
 *  Return the receiver's class.
 */
   return SOM_ResolveD(this,WPObject,SOMObject,somGetClass)
	(this);
}



};   /* WPObject */



#endif       /* SOM_WPObject_xh */

#ifndef SOM_M_WPObject_xh
#define SOM_M_WPObject_xh

class M_WPObject;

#define M_WPObject_MajorVersion 1
#define M_WPObject_MinorVersion 2

/* C++ SOM defs */
#include <somcls.xh>
#include <somcm.xh>

/* C++ parent defs */
#ifndef SOM_SOMClass_xh
#include <somcls.xh>
#endif

#ifndef M_WPObject_API
#define M_WPObject_API
/*
 * -- The Class API
 */

/*
 * Start of bindings for IDL types
 */


/*
 * End of bindings for IDL types.
 */

/*
 * -- M_WPObject is a metaclass for WPObject. Make sure WPObject is known.
 */
class WPObject;


/* A procedure to create the M_WPObject Class */
SOMEXTERN SOMClass * SOMLINK M_WPObjectNewClass(
		integer4 majorVersion,
		integer4 minorVersion);

/* The API to the M_WPObject class object, and the methods it introduces. */
SOMEXTERN struct M_WPObjectClassDataStructure {
	SOMClass *classObject;
	somMToken wpclsInitData;
	somMToken wpclsUnInitData;
	somMToken withdrawn8;
	somMToken wpclsMakeAwake;
	somMToken wpclsIncUsage;
	somMToken wpclsDecUsage;
	somMToken wpclsQueryTitle;
	somMToken wpclsQueryIcon;
	somMToken wpclsQueryDefaultHelp;
	somMToken wpclsQueryStyle;
	somMToken wpclsQueryDetailsInfo;
	somMToken wpclsQueryDefaultView;
	somMToken wpclsQueryDetails;
	somMToken wpclsQuerySearchInfo;
	somMToken wpclsQueryExtendedCriteria;
	somMToken wpclsCreateDefaultTemplates;
	somMToken withdrawn9;
	somMToken wpclsFindObjectFirst;
	somMToken wpclsFindObjectNext;
	somMToken wpclsFindObjectEnd;
	somMToken wpclsObjectPrivate1;
	somMToken wpclsSetError;
	somMToken wpclsQueryError;
	somMToken wpclsQuerySettingsPageSize;
	somMToken wpclsSetSettingsPageSize;
	somMToken wpclsQueryIconData;
	somMToken wpclsSetIcon;
	somMToken wpclsSetIconData;
	somMToken wpclsQueryObject;
	somMToken wpclsObjectFromHandle;
	somMToken wpclsObjectPrivate2;
	somMToken wpclsObjectPrivate3;
	somMToken wpclsObjectPrivate4;
	somMToken wpclsObjectPrivate5;
	somMToken wpclsObjectPrivate6;
	somMToken wpclsQueryButtonAppearance;
	somMToken wpclsNew;
	somMToken wpclsQueryFolder;
	somMToken wpclsObjectPrivate7;
	somMToken wpclsObjectPrivate8;
	somMToken wpclsRemoveObjects;
	somMToken wpclsInsertMultipleObjects;
	somMToken wpclsObjectPrivate9;
	somMToken wpclsFindOneObject;
	somMToken wpclsObjectPrivate10;
} SOMDLINK M_WPObjectClassData;
#define _M_WPObject M_WPObjectClassData.classObject

/* The API to parentMtabs for M_WPObject, and the instance data it introduces. */
SOMEXTERN struct M_WPObjectCClassDataStructure {
	somMethodTabs parentMtab;
	somDToken              instanceDataToken;
} SOMDLINK M_WPObjectCClassData;

/*
 * -- Typedefs for M_WPObject Method Procedures
 */
SOMEXTERN {
typedef BOOL   SOMLINK somTP_M_WPObject_wpclsCreateDefaultTemplates(M_WPObject *somSelf, 
		WPObject* Folder);
typedef somTP_M_WPObject_wpclsCreateDefaultTemplates *somTD_M_WPObject_wpclsCreateDefaultTemplates;
typedef void   SOMLINK somTP_M_WPObject_wpclsInitData(M_WPObject *somSelf);
typedef somTP_M_WPObject_wpclsInitData *somTD_M_WPObject_wpclsInitData;
typedef WPObject*   SOMLINK somTP_M_WPObject_wpclsMakeAwake(M_WPObject *somSelf, 
		PSZ pszTitle, 
		ULONG ulStyle, 
		HPOINTER hptrIcon, 
		POBJDATA pObjData, 
		WPFolder* Folder, 
		ULONG ulUser);
typedef somTP_M_WPObject_wpclsMakeAwake *somTD_M_WPObject_wpclsMakeAwake;
typedef WPObject*   SOMLINK somTP_M_WPObject_wpclsNew(M_WPObject *somSelf, 
		PSZ pszTitle, 
		PSZ pszSetupEnv, 
		WPFolder* Folder, 
		BOOL fLock);
typedef somTP_M_WPObject_wpclsNew *somTD_M_WPObject_wpclsNew;
typedef BOOL   SOMLINK somTP_M_WPObject_wpclsQueryDefaultHelp(M_WPObject *somSelf, 
		PULONG pHelpPanelId, 
		PSZ pszHelpLibrary);
typedef somTP_M_WPObject_wpclsQueryDefaultHelp *somTD_M_WPObject_wpclsQueryDefaultHelp;
typedef ULONG   SOMLINK somTP_M_WPObject_wpclsQueryDefaultView(M_WPObject *somSelf);
typedef somTP_M_WPObject_wpclsQueryDefaultView *somTD_M_WPObject_wpclsQueryDefaultView;
typedef PCLASSDETAILS   SOMLINK somTP_M_WPObject_wpclsQueryDetails(M_WPObject *somSelf);
typedef somTP_M_WPObject_wpclsQueryDetails *somTD_M_WPObject_wpclsQueryDetails;
typedef ULONG   SOMLINK somTP_M_WPObject_wpclsQueryDetailsInfo(M_WPObject *somSelf, 
		PCLASSFIELDINFO* ppClassFieldInfo, 
		PULONG pSize);
typedef somTP_M_WPObject_wpclsQueryDetailsInfo *somTD_M_WPObject_wpclsQueryDetailsInfo;
typedef BOOL   SOMLINK somTP_M_WPObject_wpclsQueryExtendedCriteria(M_WPObject *somSelf, 
		PSZ pszName, 
		ULONG ulSearchType, 
		PVOID pvoidExtendedCriteria);
typedef somTP_M_WPObject_wpclsQueryExtendedCriteria *somTD_M_WPObject_wpclsQueryExtendedCriteria;
typedef WPObject*   SOMLINK somTP_M_WPObject_wpclsQueryFolder(M_WPObject *somSelf, 
		PSZ pszLocation, 
		BOOL fLock);
typedef somTP_M_WPObject_wpclsQueryFolder *somTD_M_WPObject_wpclsQueryFolder;
typedef HPOINTER   SOMLINK somTP_M_WPObject_wpclsQueryIcon(M_WPObject *somSelf);
typedef somTP_M_WPObject_wpclsQueryIcon *somTD_M_WPObject_wpclsQueryIcon;
typedef void   SOMLINK somTP_M_WPObject_wpclsQuerySearchInfo(M_WPObject *somSelf, 
		M_WPObject** ClassExtended, 
		M_WPObject** ClassCreate, 
		PULONG pulClassCriteriaSize);
typedef somTP_M_WPObject_wpclsQuerySearchInfo *somTD_M_WPObject_wpclsQuerySearchInfo;
typedef ULONG   SOMLINK somTP_M_WPObject_wpclsQueryStyle(M_WPObject *somSelf);
typedef somTP_M_WPObject_wpclsQueryStyle *somTD_M_WPObject_wpclsQueryStyle;
typedef PSZ   SOMLINK somTP_M_WPObject_wpclsQueryTitle(M_WPObject *somSelf);
typedef somTP_M_WPObject_wpclsQueryTitle *somTD_M_WPObject_wpclsQueryTitle;
typedef void   SOMLINK somTP_M_WPObject_wpclsUnInitData(M_WPObject *somSelf);
typedef somTP_M_WPObject_wpclsUnInitData *somTD_M_WPObject_wpclsUnInitData;
typedef BOOL   SOMLINK somTP_M_WPObject_wpclsFindObjectFirst(M_WPObject *somSelf, 
		PCLASS pClassList, 
		PHFIND phFind, 
		PSZ pszTitle, 
		WPFolder* Folder, 
		BOOL fSubfolders, 
		PVOID pExtendedCriteria, 
		POBJECT pBuffer, 
		PULONG pCount);
typedef somTP_M_WPObject_wpclsFindObjectFirst *somTD_M_WPObject_wpclsFindObjectFirst;
typedef BOOL   SOMLINK somTP_M_WPObject_wpclsFindObjectNext(M_WPObject *somSelf, 
		HFIND hFind, 
		POBJECT pBuffer, 
		PULONG pCount);
typedef somTP_M_WPObject_wpclsFindObjectNext *somTD_M_WPObject_wpclsFindObjectNext;
typedef BOOL   SOMLINK somTP_M_WPObject_wpclsFindObjectEnd(M_WPObject *somSelf, 
		HFIND hFind);
typedef somTP_M_WPObject_wpclsFindObjectEnd *somTD_M_WPObject_wpclsFindObjectEnd;
typedef BOOL   SOMLINK somTP_M_WPObject_wpclsSetError(M_WPObject *somSelf, 
		ULONG ulErrorId);
typedef somTP_M_WPObject_wpclsSetError *somTD_M_WPObject_wpclsSetError;
typedef ULONG   SOMLINK somTP_M_WPObject_wpclsQueryError(M_WPObject *somSelf);
typedef somTP_M_WPObject_wpclsQueryError *somTD_M_WPObject_wpclsQueryError;
typedef BOOL   SOMLINK somTP_M_WPObject_wpclsQuerySettingsPageSize(M_WPObject *somSelf, 
		PSIZEL pSizl);
typedef somTP_M_WPObject_wpclsQuerySettingsPageSize *somTD_M_WPObject_wpclsQuerySettingsPageSize;
typedef ULONG   SOMLINK somTP_M_WPObject_wpclsQueryIconData(M_WPObject *somSelf, 
		PICONINFO pIconInfo);
typedef somTP_M_WPObject_wpclsQueryIconData *somTD_M_WPObject_wpclsQueryIconData;
typedef WPObject*   SOMLINK somTP_M_WPObject_wpclsQueryObject(M_WPObject *somSelf, 
		HOBJECT hObject);
typedef somTP_M_WPObject_wpclsQueryObject *somTD_M_WPObject_wpclsQueryObject;
typedef ULONG   SOMLINK somTP_M_WPObject_wpclsQueryButtonAppearance(M_WPObject *somSelf);
typedef somTP_M_WPObject_wpclsQueryButtonAppearance *somTD_M_WPObject_wpclsQueryButtonAppearance;
typedef void   SOMLINK somTP_M_WPObject_wpclsDecUsage(M_WPObject *somSelf);
typedef somTP_M_WPObject_wpclsDecUsage *somTD_M_WPObject_wpclsDecUsage;
typedef void   SOMLINK somTP_M_WPObject_wpclsIncUsage(M_WPObject *somSelf);
typedef somTP_M_WPObject_wpclsIncUsage *somTD_M_WPObject_wpclsIncUsage;
typedef BOOL   SOMLINK somTP_M_WPObject_wpclsInsertMultipleObjects(M_WPObject *somSelf, 
		HWND hwndCnr, 
		PPOINTL pptlIcon, 
		PVOID* pObjectArray, 
		PVOID pRecordParent, 
		ULONG NumRecords);
typedef somTP_M_WPObject_wpclsInsertMultipleObjects *somTD_M_WPObject_wpclsInsertMultipleObjects;
typedef WPObject*   SOMLINK somTP_M_WPObject_wpclsFindOneObject(M_WPObject *somSelf, 
		HWND hwndOwner, 
		PSZ pszFindParams);
typedef somTP_M_WPObject_wpclsFindOneObject *somTD_M_WPObject_wpclsFindOneObject;
typedef BOOL   SOMLINK somTP_M_WPObject_wpclsSetSettingsPageSize(M_WPObject *somSelf, 
		PSIZEL pSizl);
typedef somTP_M_WPObject_wpclsSetSettingsPageSize *somTD_M_WPObject_wpclsSetSettingsPageSize;
typedef BOOL   SOMLINK somTP_M_WPObject_wpclsSetIconData(M_WPObject *somSelf, 
		PICONINFO pIconInfo);
typedef somTP_M_WPObject_wpclsSetIconData *somTD_M_WPObject_wpclsSetIconData;
typedef BOOL   SOMLINK somTP_M_WPObject_wpclsSetIcon(M_WPObject *somSelf, 
		HPOINTER hptrNewIcon);
typedef somTP_M_WPObject_wpclsSetIcon *somTD_M_WPObject_wpclsSetIcon;
typedef WPObject*   SOMLINK somTP_M_WPObject_wpclsObjectFromHandle(M_WPObject *somSelf, 
		HOBJECT hObject);
typedef somTP_M_WPObject_wpclsObjectFromHandle *somTD_M_WPObject_wpclsObjectFromHandle;
typedef BOOL   SOMLINK somTP_M_WPObject_wpclsRemoveObjects(M_WPObject *somSelf, 
		HWND hwndCnr, 
		PVOID* pRecordArray, 
		ULONG NumRecords, 
		BOOL RemoveAll);
typedef somTP_M_WPObject_wpclsRemoveObjects *somTD_M_WPObject_wpclsRemoveObjects;

/*
 * -- Typedefs for Reintroduced Wrapper Methods
 */
typedef WPObject*   SOMLINK somTP_M_WPObject_somNew(M_WPObject *somSelf);
typedef somTP_M_WPObject_somNew *somTD_M_WPObject_somNew;
}

#endif /* M_WPObject_API */


/*
 * -- This emitter treats Method Tokens as Thunks by default.
 * -- Use the sc modifier "nothunks" to change this default
 */
#undef somresolve_
#define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))

/*
 * -- The C++ Wrapper Class for M_WPObject
 */
class M_WPObject : public SOMClass
{
public:

// M_WPObject::new creates the class object if necessary, and then uses somNewNoInit
// to allocate memory and create the object. Initialization is in ctors.
void *operator new(size_t)
{
   if (!_M_WPObject) M_WPObjectNewClass(M_WPObject_MajorVersion,M_WPObject_MinorVersion);
   return (void*)
      SOM_Resolve(_M_WPObject,SOMClass,somNewNoInit)
         ((SOMClass *)((void*)_M_WPObject));
}

// M_WPObject::delete uses somDestruct.
void operator delete(void * obj)
{
   if (obj && *(void**)obj) {
      SOM_Resolve(obj,SOMObject,somDestruct)
         ((SOMObject*)obj, 1, 0);
   }
}

M_WPObject& operator=(M_WPObject& fromObj)
{
   this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
   return *this;
}

M_WPObject()
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (M_WPObjectCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultInit(0);
}

M_WPObject(M_WPObject* fromObj)
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (M_WPObjectCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
}

M_WPObject(const M_WPObject* fromObj)
{
   if (*(void**)this != 
       ((somParentMtabStructPtr)
        (M_WPObjectCClassData.parentMtab))->mtab)
      return;
   ((SOMObject*)((void*)this))->somDefaultConstCopyInit(0,((SOMObject*)((void*)fromObj)));
}


/* method: wpclsCreateDefaultTemplates */
BOOL   wpclsCreateDefaultTemplates(WPObject* Folder)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsCreateDefaultTemplates)
	(this,Folder);
}


/* method: wpclsInitData */
void   wpclsInitData()
{
   SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsInitData)
	(this);
}


/* method: wpclsMakeAwake */
WPObject*   wpclsMakeAwake(PSZ pszTitle, 
		ULONG ulStyle, 
		HPOINTER hptrIcon, 
		POBJDATA pObjData, 
		WPFolder* Folder, 
		ULONG ulUser)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsMakeAwake)
	(this,pszTitle,ulStyle,hptrIcon,pObjData,Folder,ulUser);
}


/* method: wpclsNew */
WPObject*   wpclsNew(PSZ pszTitle, 
		PSZ pszSetupEnv, 
		WPFolder* Folder, 
		BOOL fLock)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsNew)
	(this,pszTitle,pszSetupEnv,Folder,fLock);
}


/* method: wpclsQueryDefaultHelp */
BOOL   wpclsQueryDefaultHelp(PULONG pHelpPanelId, 
		PSZ pszHelpLibrary)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQueryDefaultHelp)
	(this,pHelpPanelId,pszHelpLibrary);
}


/* method: wpclsQueryDefaultView */
ULONG   wpclsQueryDefaultView()
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQueryDefaultView)
	(this);
}


/* method: wpclsQueryDetails */
PCLASSDETAILS   wpclsQueryDetails()
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQueryDetails)
	(this);
}


/* method: wpclsQueryDetailsInfo */
ULONG   wpclsQueryDetailsInfo(PCLASSFIELDINFO* ppClassFieldInfo, 
		PULONG pSize)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQueryDetailsInfo)
	(this,ppClassFieldInfo,pSize);
}


/* method: wpclsQueryExtendedCriteria */
BOOL   wpclsQueryExtendedCriteria(PSZ pszName, 
		ULONG ulSearchType, 
		PVOID pvoidExtendedCriteria)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQueryExtendedCriteria)
	(this,pszName,ulSearchType,pvoidExtendedCriteria);
}


/* method: wpclsQueryFolder */
WPObject*   wpclsQueryFolder(PSZ pszLocation, 
		BOOL fLock)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQueryFolder)
	(this,pszLocation,fLock);
}


/* method: wpclsQueryIcon */
HPOINTER   wpclsQueryIcon()
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQueryIcon)
	(this);
}


/* method: wpclsQuerySearchInfo */
void   wpclsQuerySearchInfo(M_WPObject** ClassExtended, 
		M_WPObject** ClassCreate, 
		PULONG pulClassCriteriaSize)
{
   SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQuerySearchInfo)
	(this,ClassExtended,ClassCreate,pulClassCriteriaSize);
}


/* method: wpclsQueryStyle */
ULONG   wpclsQueryStyle()
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQueryStyle)
	(this);
}


/* method: wpclsQueryTitle */
PSZ   wpclsQueryTitle()
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQueryTitle)
	(this);
}


/* method: wpclsUnInitData */
void   wpclsUnInitData()
{
   SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsUnInitData)
	(this);
}


/* method: wpclsFindObjectFirst */
BOOL   wpclsFindObjectFirst(PCLASS pClassList, 
		PHFIND phFind, 
		PSZ pszTitle, 
		WPFolder* Folder, 
		BOOL fSubfolders, 
		PVOID pExtendedCriteria, 
		POBJECT pBuffer, 
		PULONG pCount)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsFindObjectFirst)
	(this,pClassList,phFind,pszTitle,Folder,fSubfolders,pExtendedCriteria,pBuffer,pCount);
}


/* method: wpclsFindObjectNext */
BOOL   wpclsFindObjectNext(HFIND hFind, 
		POBJECT pBuffer, 
		PULONG pCount)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsFindObjectNext)
	(this,hFind,pBuffer,pCount);
}


/* method: wpclsFindObjectEnd */
BOOL   wpclsFindObjectEnd(HFIND hFind)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsFindObjectEnd)
	(this,hFind);
}


/* method: wpclsSetError */
BOOL   wpclsSetError(ULONG ulErrorId)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsSetError)
	(this,ulErrorId);
}


/* method: wpclsQueryError */
ULONG   wpclsQueryError()
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQueryError)
	(this);
}


/* method: wpclsQuerySettingsPageSize */
BOOL   wpclsQuerySettingsPageSize(PSIZEL pSizl)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQuerySettingsPageSize)
	(this,pSizl);
}


/* method: wpclsQueryIconData */
ULONG   wpclsQueryIconData(PICONINFO pIconInfo)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQueryIconData)
	(this,pIconInfo);
}


/* method: wpclsQueryObject */
WPObject*   wpclsQueryObject(HOBJECT hObject)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQueryObject)
	(this,hObject);
}


/* method: wpclsQueryButtonAppearance */
ULONG   wpclsQueryButtonAppearance()
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsQueryButtonAppearance)
	(this);
}


/* method: wpclsDecUsage */
void   wpclsDecUsage()
{
   SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsDecUsage)
	(this);
}


/* method: wpclsIncUsage */
void   wpclsIncUsage()
{
   SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsIncUsage)
	(this);
}


/* method: wpclsInsertMultipleObjects */
BOOL   wpclsInsertMultipleObjects(HWND hwndCnr, 
		PPOINTL pptlIcon, 
		PVOID* pObjectArray, 
		PVOID pRecordParent, 
		ULONG NumRecords)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsInsertMultipleObjects)
	(this,hwndCnr,pptlIcon,pObjectArray,pRecordParent,NumRecords);
}


/* method: wpclsFindOneObject */
WPObject*   wpclsFindOneObject(HWND hwndOwner, 
		PSZ pszFindParams)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsFindOneObject)
	(this,hwndOwner,pszFindParams);
}


/* method: wpclsSetSettingsPageSize */
BOOL   wpclsSetSettingsPageSize(PSIZEL pSizl)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsSetSettingsPageSize)
	(this,pSizl);
}


/* method: wpclsSetIconData */
BOOL   wpclsSetIconData(PICONINFO pIconInfo)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsSetIconData)
	(this,pIconInfo);
}


/* method: wpclsSetIcon */
BOOL   wpclsSetIcon(HPOINTER hptrNewIcon)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsSetIcon)
	(this,hptrNewIcon);
}


/* method: wpclsObjectFromHandle */
WPObject*   wpclsObjectFromHandle(HOBJECT hObject)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsObjectFromHandle)
	(this,hObject);
}


/* method: wpclsRemoveObjects */
BOOL   wpclsRemoveObjects(HWND hwndCnr, 
		PVOID* pRecordArray, 
		ULONG NumRecords, 
		BOOL RemoveAll)
{
   return SOM_ResolveD(this,M_WPObject,M_WPObject,wpclsRemoveObjects)
	(this,hwndCnr,pRecordArray,NumRecords,RemoveAll);
}


/*
 * Reintroduce inherited methods
 */

/* method: somNew */
WPObject*  somNew()
{
/*
 *  Uses SOMMalloc to allocate storage for a new instance of the
 *  receiving class, and then calls somRenewNoInitNoZero to load the
 *  new object's method table pointer. Then somDefaultInit is called to
 *  initialize the new object.  Note: If the instance is a class object,
 *  somInitMIClass must then be invoked to declare parents and
 *  initialize the class's instance method table. Upon failure, NULL
 *  is returned.
 */
   return SOM_ResolveD(this,M_WPObject,SOMClass,somNew)
	(this);
}



};   /* M_WPObject */



#endif       /* SOM_M_WPObject_xh */
