The wpAddToObjUseList method adds items to the object's in-use list. When an object's memory is allocated, wpAllocMem calls wpAddToObjUseList to add a USAGE_MEMORY item to the object's in-use list. The allocated memory immediately follows the MEMORYITEM data structure. The following figure shows the syntax of the MEMORYITEM data structure:
typedef struct _MEMORYITEM
{
ULONG cbBuffer; /* Number of bytes in memory block */
}MEMORYITEM;
The wpOpen method calls wpAddToObjUseList to add a USAGE_OPENVIEW item to the object's in-use list. The wpSwitchTo method scans the in-use list for USAGE_OPENVIEW items to give focus to an already existing view. In general, wpViewObject is used instead of wpOpen because wpViewObject considers the setting in the Object open behavior group-box control on the Window page of the Settings notebook, and calls either wpOpen or wpSwitchTo. The following figure shows the syntax of the VIEWITEM data structure:
typedef struct _VIEWITEM
{
ULONG view; /* Object view that this represents */
LHANDLE handle; /* Open handle */
ULONG ulViewState; /* View state flags */
HWND hwndCnr; /* Used only by system */
PMINIRECORDCORE pRecord; /* Used only by system */
}VIEWITEM;
When wpSetLinkToObject is called to link a shadow to the object it points to, wpAddToObjUseList is called to add the USAGE_LINK item to the original object's in-use list. The following figure shows the syntax of the LINKITEM data structure:
typedef struct _LINKITEM
{
WPObject *LinkObj; /* The link object */
}LINKITEM;
When a data file is opened, its associated program is started and a USAGE_OPENFILE use-item is added to the data file's in-use list. The following figure shows the syntax of the VIEWFILE data structure:
typedef struct _VIEWFILE
{
ULONG ulMenuId; /* Menu id if association or menu page */
LHANDLE handle; /* Open handle */
HWND hwndCnr; /* Used only by system */
PMINIRECORDCORE pRecord; /* Used only by system */
}VIEWFILE;