Listing 2 Implemenation of ListExchange_PutItems()
/* ///////////////////////////////////////////////////////////// * ... * * Extract from MOCtlFns.c * * Copyright (C) 1998-2003, Synesis Software Pty Ltd. * (Licensed under the Synesis Software Standard Public License: * http://www.synesis.com.au/licenses/ssspl.html) * * ... * ////////////////////////////////////////////////////////// */ SInt32 ListExchange_PutItems( HWND hwndList, LPUNKNOWN punkEnumItems, UInt32 flags) { static const IID IID_IEnumBSTR_Synesis = { . . . }; static const IID IID_IEnumBSTR_MS = { . . . }; static const IID IID_IEnumGUID_Synesis = { . . . }; static const IID IID_IEnumGUID_MS = { . . . }; static const EnumeratorHandler enumerators[] = { { &IID_IEnumString, EnumXXXX_Reset , EnumString_NextItem, EnumString_ClearItem } , { &IID_IEnumBSTR_Synesis, EnumXXXX_Reset , EnumBSTR_NextItem, EnumBSTR_ClearItem } , { &IID_IEnumBSTR_MS, EnumXXXX_Reset , EnumBSTR_NextItem, EnumBSTR_ClearItem } , { &IID_IEnumVARIANT, EnumXXXX_Reset , EnumVARIANT_NextItem, EnumVARIANT_ClearItem } , { &IID_IEnumGUID_Synesis, EnumXXXX_Reset , EnumGUID_NextItem, EnumGUID_ClearItem } , { &IID_IEnumGUID_MS, EnumXXXX_Reset , EnumGUID_NextItem, EnumGUID_ClearItem } , { &IID_IEnumUnknown, EnumXXXX_Reset , EnumUnknown_NextItem, EnumUnknown_ClearItem } }; static const ControlHandler controls[] = { { "LISTBOX", ListBox_PutItem, ListBox_Reset } , { "COMBOBOX", ComboBox_PutItem, ComboBox_Reset } , { "SysListView32", ListView_PutItem, ListView_Reset } , { "EDIT", Edit_PutItem, Edit_Reset } }; return ListExchange_PutItems_Base(hwndList, punkEnumItems, flags, 0, enumerators, NUM_ELEMENTS(enumerators), controls, NUM_ELEMENTS(controls)); }