Foros - Stratos

Programadores => Código de la Semana => Mensaje iniciado por: ethernet en 03 de Noviembre de 2002, 07:37:53 PM

Título: Funcion recursiva para recorrer un treeviev
Publicado por: ethernet en 03 de Noviembre de 2002, 07:37:53 PM




void CReempView::SelTodoLista()//Al cargar una lista de archivos en un treeview con checks ejecutamos esta funcion

{

 nArchTotal=0;

nArchCheq=0;

 

hElemento=m_CtrlLista.GetRootItem();

m_CtrlLista.SetCheck(hElemento);

m_CtrlLista.GetChildItem(hElemento);



RecurSelTodoLista();

}



void CReempView::RecurSelTodoLista()//Funcion recursiva

{



do{

 if(!m_CtrlLista.ItemHasChildren(hElemento))//Si no tiene hijos

 {

  m_CtrlLista.SetCheck(hElemento,bSelTodo);

  hElemento=m_CtrlLista.GetNextSiblingItem(hElemento);

  nArchTotal++;

  nArchCheq++;  

 }

 else if(m_CtrlLista.ItemHasChildren(hElemento))//Si Tiene Hijos

 {

  HTREEITEM hElementoMem;

 

  hElementoMem=hElemento;

  m_CtrlLista.SetCheck(hElemento,bSelTodo);

  hElemento=m_CtrlLista.GetChildItem(hElemento);

  RecurSelTodoLista();

  hElemento=hElementoMem;

  hElemento=m_CtrlLista.GetNextSiblingItem(hElemento);

 }

}while(hElemento!=NULL);

}







Título: Funcion recursiva para recorrer un treeviev
Publicado por: fiero en 03 de Noviembre de 2002, 09:20:34 PM
                                Sin duda, una forma peculiar de función recursiva  :) ...

Por optimizar un poquillo, yo diria que sobra código en la siguiente línea:


else if(m_CtrlLista.ItemHasChildren(hElemento))


ya que es la misma comparación pero a la inversa yo pondría solo esto  :ojo: :


else



un saludo