/**************************************************************************
* CDesktopFolder::EnumObjects
*/
-HRESULT WINAPI CDesktopFolder::EnumObjects(
- HWND hwndOwner,
- DWORD dwFlags,
- LPENUMIDLIST *ppEnumIDList)
+HRESULT WINAPI CDesktopFolder::EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList)
{
- CComObject<CDesktopFolderEnum> *theEnumerator;
- CComPtr<IEnumIDList> result;
- HRESULT hResult;
-
- TRACE ("(%p)->(HWND=%p flags=0x%08x pplist=%p)\n", this, hwndOwner, dwFlags, ppEnumIDList);
-
- if (ppEnumIDList == NULL)
- return E_POINTER;
- *ppEnumIDList = NULL;
-
- ATLTRY (theEnumerator = new CComObject<CDesktopFolderEnum>);
-
- if (theEnumerator == NULL)
- return E_OUTOFMEMORY;
-
- hResult = theEnumerator->QueryInterface(IID_PPV_ARG(IEnumIDList, &result));
- if (FAILED (hResult))
- {
- delete theEnumerator;
- return hResult;
- }
-
- hResult = theEnumerator->Initialize (this, hwndOwner, dwFlags);
- if (FAILED (hResult))
- return hResult;
- *ppEnumIDList = result.Detach ();
-
- TRACE ("-- (%p)->(new ID List: %p)\n", this, *ppEnumIDList);
-
- return S_OK;
+ return ShellObjectCreatorInit<CDesktopFolderEnum>(this, hwndOwner, dwFlags, IID_IEnumIDList, ppEnumIDList);
}
/**************************************************************************
if ((clsid = _ILGetGUIDPointer (pidl)))
{
- if (GET_SHGDN_FOR (dwFlags) & SHGDN_FORPARSING)
+ if (GET_SHGDN_FOR (dwFlags) == SHGDN_FORPARSING)
{
int bWantsForParsing;