CItem * CContainer::ContentFind( RESOURCE_ID_BASE rid, DWORD dwArg, int iDecendLevels ) const { ADDTOCALLSTACK("CContainer::ContentFind"); // send all the items in the container. if ( rid.GetResIndex() == 0 ) return( NULL ); CItem* pItem=GetContentHead(); for ( ; pItem!=NULL; pItem=pItem->GetNext()) { if ( pItem->IsResourceMatch( rid, dwArg )) break; if ( iDecendLevels <= 0 ) continue; CItemContainer * pCont = dynamic_cast <CItemContainer*>(pItem); if ( pCont != NULL ) { if ( ! pCont->IsSearchable()) continue; CItem * pItemInCont = pCont->ContentFind( rid, dwArg, iDecendLevels-1 ); if ( pItemInCont ) return( pItemInCont ); } } return( pItem ); }