"AND" "OR"
Главная Информер Журнал Форум

Раскрытие одной ветви полностью -- 1 метод

Проблему раскрытия одной ветви польностью можно решить следующим путем:

       
 // ExpandBranch - Expands a branch completely
// hti          - Handle of the tree item to expand
void CTreeCtrlX::ExpandBranch( HTREEITEM hti )
{
        if( ItemHasChildren( hti ) ){
                Expand( hti, TVE_EXPAND );
                hti = GetChildItem( hti );
                do{
                        ExpandBranch( hti );
                }while( (hti = GetNextSiblingItem( hti )) != NULL );
        }
        EnsureVisible( GetSelectedItem() );
}



        

Принцип действия не сложен. Он заключается в рекурсивном вызове развертывающего метода. Беда только в том, что при достаточно большом дереве это может привести к нехватке памяти или ошибкам сопутствующим рекурсии.

 

 

Источник: ProtoSphere