Implementation of EnumMoniker and Partial impl on MkParseDisplayName
Jeff Latimer
jeffl at defcen.gov.au
Thu Mar 31 05:55:40 CST 2005
Rob, I did not grasp what you meant by this. The examples I looked at
to set this up seem to do the way I coded it.
Jeff
Robert Shearman wrote:
> Jeff Latimer wrote:
>
>
>> + DWORD runObjTabRegister; /* registration key of the next
>> registered object */
>> + DWORD currentPos; /* enum position in the
>> list */
>> +
>> +} EnumMonikerImpl;
>> +
>> +
>> +/* IEnumMoniker prototype functions : */
>> +/* IUnknown functions*/
>> +static HRESULT WINAPI EnumMonikerImpl_QueryInterface(IEnumMoniker*
>> iface,REFIID riid,void** ppvObject);
>> +static ULONG WINAPI EnumMonikerImpl_AddRef(IEnumMoniker* iface);
>> +static ULONG WINAPI EnumMonikerImpl_Release(IEnumMoniker* iface);
>> +/* IEnumMoniker functions */
>> +static HRESULT WINAPI EnumMonikerImpl_Next(IEnumMoniker* iface,
>> ULONG celt, IMoniker** rgelt, ULONG* pceltFetched);
>> +static HRESULT WINAPI EnumMonikerImpl_Skip(IEnumMoniker* iface,
>> ULONG celt);
>> +static HRESULT WINAPI EnumMonikerImpl_Reset(IEnumMoniker* iface);
>> +static HRESULT WINAPI EnumMonikerImpl_Clone(IEnumMoniker* iface,
>> IEnumMoniker** ppenum);
>>
>>
>
> If you put the vtable after the implementations of the functions then
> you don't need to declare the prototypes here.
>
+
>> +/* Virtual function table for the IEnumMoniker class. */
>> +static IEnumMonikerVtbl VT_EnumMonikerImpl =
>> +{
>> + EnumMonikerImpl_QueryInterface,
>> + EnumMonikerImpl_AddRef,
>> + EnumMonikerImpl_Release,
>> + EnumMonikerImpl_Next,
>> + EnumMonikerImpl_Skip,
>> + EnumMonikerImpl_Reset,
>> + EnumMonikerImpl_Clone
>> +};
>> +
>> /***********************************************************************
>
More information about the wine-devel
mailing list