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