Elementy nadrzędne i podrzędne kontrolki drzewa
Każdy element w kontrolce drzewa (CTreeCtrl) może mieć listę elementów podrzędnych, które są nazywane elementami podrzędnymi skojarzonymi z nim. Element, który ma co najmniej jeden element podrzędny, jest nazywany elementem nadrzędnym. Element podrzędny jest wyświetlany poniżej elementu nadrzędnego i jest wcięcie, aby wskazać, że jest podrzędny dla elementu nadrzędnego. Element, który nie ma elementu nadrzędnego, znajduje się w górnej części hierarchii i jest nazywany elementem głównym.
W dowolnym momencie stan listy elementów podrzędnych elementu nadrzędnego można rozwinąć lub zwinąć. Po rozwinięciu stanu elementy podrzędne są wyświetlane poniżej elementu nadrzędnego. Po zwinięciu elementy podrzędne nie są wyświetlane. Lista automatycznie przełącza się między rozwiniętymi i zwiniętymi stanami, gdy użytkownik kliknie dwukrotnie element nadrzędny lub, jeśli element nadrzędny ma styl TVS_HASBUTTONS , gdy użytkownik kliknie przycisk skojarzony z elementem nadrzędnym. Aplikacja może rozwinąć lub zwinąć elementy podrzędne przy użyciu funkcji Rozwiń składową.
Element można dodać do kontrolki drzewa, wywołując funkcję składową InsertItem . Ta funkcja zwraca uchwyt typu HTREEITEM , który jednoznacznie identyfikuje element. Podczas dodawania elementu należy określić uchwyt elementu nadrzędnego nowego elementu. Jeśli określisz wartość NULL lub wartość TVI_ROOT zamiast uchwytu elementu nadrzędnego w strukturze TVINSERTSTRUCT lub hParent parametr, element zostanie dodany jako element główny.
Kontrolka drzewa wysyła komunikat powiadomienia TVN_ITEMEXPANDING , gdy lista elementów podrzędnych elementu nadrzędnego ma zostać rozwinięta lub zwinięta. Powiadomienie umożliwia uniemożliwienie zmiany lub ustawienie jakichkolwiek atrybutów elementu nadrzędnego, które zależą od stanu listy elementów podrzędnych. Po zmianie stanu listy kontrolka drzewa wysyła TVN_ITEMEXPANDED komunikat powiadomienia.
Po rozwinięciu listy elementów podrzędnych jest ona wcięta względem elementu nadrzędnego. Możesz ustawić wielkość wcięcia przy użyciu funkcji składowej SetIndent lub pobrać bieżącą kwotę przy użyciu funkcji składowej GetIndent.