void CFolderDlg::OnItemExpanding(NMTREEVIEW* lpnmtv) { if (lpnmtv->action == TVE_EXPAND) { TCHAR szKey[MAX_PATH]; //フォルダ名を取得 GetTree (lpnmtv->hdr.hwndFrom, lpnmtv->itemNew.hItem, szKey); //子ツリーを列挙する EnumChildren (lpnmtv->hdr.hwndFrom, lpnmtv->itemNew.hItem, szKey); } }
/** * Return a named child item. * The ParseType can be one of the following values: * - SHGDN_FORPARSING = the parsing name * - SHGDN_FOREDITING = the display name */ HRESULT CNseBaseItem::GetChild(LPCWSTR pstrName, SHGNO ParseType, CNseItem** pItem) { // We provide a default implementation if none was defined as an override. This // will be somewhat slower than a direct lookup, so consider writing the override in // the derived class. This method is used for name parsing and rename/delete operations. ATLASSERT(_ShellModule.GetConfigBool(VFS_HAVE_UNIQUE_NAMES)); ATLASSERT(*pItem==NULL); ATLASSERT(IsFolder()); CNseItemArray aChildren; HR( EnumChildren(NULL, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS, aChildren) ); REFPROPERTYKEY pkey = IsBitSet(ParseType, SHGDN_FORPARSING) ? PKEY_ParsingName : PKEY_ItemName; for( int i = 0; i < aChildren.GetSize(); i++ ) { CComPropVariant v; aChildren[i]->GetProperty(pkey, v); if( v.vt == VT_LPWSTR && v.pwszVal != NULL && wcscmp(v.pwszVal, pstrName) == 0 ) { *pItem = aChildren[i]; return aChildren.RemoveAt(i) ? S_OK : E_UNEXPECTED; } } return S_OK; }
//----------------------------------------------------------------------------- // Purpose: // Input : *pList - //----------------------------------------------------------------------------- void CMapWorld::GetUsedTextures(CUsedTextureList &List) { List.RemoveAll(); EnumChildren((ENUMMAPCHILDRENPROC)AddUsedTextures, (DWORD)&List, MAPCLASS_TYPE(CMapSolid)); EnumChildren((ENUMMAPCHILDRENPROC)AddOverlayTextures, (DWORD)&List, MAPCLASS_TYPE(CMapOverlay)); }