IDispatchEx::GetNextDispID

Enumerates the members of the object.

Syntax

HRESULT GetNextDispID(
   DWORD grfdex,
   DISPID id,
   DISPID *pid
);

Parameters

grfdex
Determines which set of items are to be enumerated. This can be a combination of the following values:

Value Meaning
fdexEnumDefault Requests that the object enumerates the default elements. The object is allowed to enumerate any set of elements.
fdexEnumAll Requests that the object enumerates all of the elements. The object is allowed to enumerate any set of elements.

id
Identifies the current member. GetNextDispID retrieves the item in the enumeration after this one. Uses GetDispID or a previous call to GetNextDispID to obtain this identifier. Uses the DISPID_STARTENUM value to obtain the first identifier of the first item.

pid
Address of a DISPID variable that receives the identifier of the next item in the enumeration.

If a member is deleted by DeleteMemberByName or DeleteMemberByDispID, the DISPID needs to remain valid for GetNextDispID.

Return Value

Returns one of the following values:

S_OK Success.
S_FALSE Enumeration is done.

Example

   HRESULT hr;
   BSTR bstrName;
   DISPID dispid;
   IDispatchEx *pdex;

   // Assign to pdex
   hr = pdex->GetNextDispID(fdexEnumAll, DISPID_STARTENUM, &dispid);
   while (hr == NOERROR)
   {
      hr = pdex->GetMemberName(dispid, &bstrName);
      if (!wcscmp(bstrName, OLESTR("Bar")))
      {
         SysFreeString(bstrName);
         return TRUE;
      }
      SysFreeString(bstrName);
      hr = pdex->GetNextDispID(fdexEnumAll, dispid, &dispid);
   }

See also