Listing 1 Definitions of the ListExchange structures and functions
/* ///////////////////////////////////////////////////////////// * ... * * Extract from MOCtlFns.h * * Copyright (C) 1998-2003, Synesis Software Pty Ltd. * (Licensed under the Synesis Software Standard Public License: * http://www.synesis.com.au/licenses/ssspl.html) * * ... * ////////////////////////////////////////////////////////// */ /* Flags */ #define SYLXF_RESETCONTENT (0x00000001) /* Empties control first */ /* Typedefs */ typedef union _Enum2WndItem { LPOLESTR olestr; /* OLE string */ BSTR bstr; /* COM BSTR */ VARIANT var; /* COM VARIANT type */ GUID guid; /* GUID */ LPUNKNOWN punk; /* Object */ LPDISPATCH pdisp; /* Automation object */ void *pv; /* any other type */ } Enum2WndItem; __SyPtrType1(Enum2WndItem) typedef HRESULT (*PFnEnum_Reset)( LPVOID itf); typedef HRESULT (*PFnEnum_NextItem)(LPVOID itf, LPEnum2WndItem item, LPVOID *pvalue); typedef void (*PFnEnum_ClearItem)( LPVOID itf, LPEnum2WndItem item, LPVOID value); typedef struct _EnumeratorHandler { REFIID iid; PFnEnum_Reset pfnReset; PFnEnum_NextItem pfnNextItem; PFnEnum_ClearItem pfnClearItem; } EnumeratorHandler; typedef HRESULT (*PFnCtrl_PutItem)( HWND hwndCtrl, LPVOID str, UInt32 flags, UInt32 param); typedef void (*PFnCtrl_Reset)( HWND hwndCtrl); typedef struct _ControlHandler { char const *className; PFnCtrl_PutItem pfnPutItem; PFnCtrl_Reset pfnReset; } ControlHandler; /* Functions */ SInt32 ListExchange_PutItems_Base(HWND hwndList, LPUNKNOWN punkEnumItems, UInt32 flags, UInt32 param, EnumeratorHandler const *enumerators, UInt32 cEnumerators, ControlHandler const *controls, UInt32 cControls); SInt32 ListExchange_PutItems( HWND hwndList, LPUNKNOWN punkEnumItems, UInt32 flags);