ResolveDependees(szToggledReferenceName);
ResolveDependees(szToggledReferenceName, hwndListBox);
void ResolveDependees(LPSTR szToggledReferenceName){  BOOL  bAtLeastOneSelected;  BOOL  bMoreToResolve  = FALSE;  siC   *siCTemp        = siComponents;  DWORD dwIndex;  DWORD dwAttrib;  do  {    if(siCTemp == NULL)      break;    if((siCTemp->siCDDependees != NULL) &&       (lstrcmpi(siCTemp->szReferenceName, szToggledReferenceName) != 0))    {      bAtLeastOneSelected = ResolveComponentDependee(siCTemp->siCDDependees);      if(bAtLeastOneSelected == FALSE)      {        if((dwIndex = SiCNodeGetIndexRN(siCTemp->szReferenceName)) != -1)        {          dwAttrib = SiCNodeGetAttributes(dwIndex, TRUE, AC_ALL);          if((dwAttrib & SIC_SELECTED) && !(dwAttrib & SIC_DISABLED))          {            SiCNodeSetAttributes(dwIndex, SIC_SELECTED, FALSE, TRUE, AC_ALL);            bMoreToResolve = TRUE;          }        }      }      else      {        if((dwIndex = SiCNodeGetIndexRN(siCTemp->szReferenceName)) != -1)        {          dwAttrib = SiCNodeGetAttributes(dwIndex, TRUE, AC_ALL);          if(!(dwAttrib & SIC_SELECTED) && !(dwAttrib & SIC_DISABLED))          {            SiCNodeSetAttributes(dwIndex, SIC_SELECTED, TRUE, TRUE, AC_ALL);            bMoreToResolve = TRUE;          }        }      }    }    siCTemp = siCTemp->Next;  } while((siCTemp != NULL) && (siCTemp != siComponents));  if(bMoreToResolve == TRUE)    ResolveDependees(szToggledReferenceName);}