예제 #1
0
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);
	}
}
예제 #2
0
/**
 * 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;
}
예제 #3
0
//-----------------------------------------------------------------------------
// 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));
}