Używanie kontrolek drzewa
Typowe użycie kontrolki drzewa (CTreeCtrl) jest zgodne z poniższym wzorcem:
Kontrolka jest tworzona. Jeśli kontrolka jest określona w szablonie okna dialogowego lub jeśli używasz
CTreeView
, tworzenie jest automatyczne po utworzeniu okna dialogowego lub widoku. Jeśli chcesz utworzyć kontrolkę drzewa jako okno podrzędne innego okna, użyj funkcji Utwórz element członkowski.Jeśli chcesz, aby kontrolka drzewa korzystała z obrazów, ustaw listę obrazów, wywołując metodę SetImageList. Możesz również zmienić wcięcie, wywołując polecenie SetIndent. Dobrym rozwiązaniem jest w dzienniku OnInitDialog (w przypadku kontrolek w oknach dialogowych) lub OnInitialUpdate (w przypadku widoków).
Umieść dane w kontrolce, wywołując
CTreeCtrl
funkcję InsertItem raz dla każdego elementu danych.InsertItem
Zwraca uchwyt do elementu, którego można użyć do odwoływania się do niego później, na przykład podczas dodawania elementów podrzędnych. Dobry czas na zainicjowanie danych znajduje sięOnInitDialog
(w przypadku kontrolek w oknach dialogowych) lubOnInitialUpdate
(w przypadku widoków).Gdy użytkownik wchodzi w interakcję z kontrolką, będzie wysyłać różne komunikaty z powiadomieniami. Możesz określić funkcję do obsługi każdego komunikatu, który chcesz obsłużyć, dodając makro ON_NOTIFY_REFLECT w mapie komunikatów okna sterowania lub dodając makro ON_NOTIFY do mapy komunikatów okna nadrzędnego. Aby uzyskać listę możliwych powiadomień, zobacz Komunikaty powiadomień kontrolki drzewa w dalszej części tego tematu.
Wywołaj różne funkcje zestawu elementów członkowskich, aby ustawić wartości dla kontrolki. Zmiany, które można wprowadzić, obejmują ustawienie wcięcia i zmianę tekstu, obrazu lub danych skojarzonych z elementem.
Użyj różnych funkcji Get, aby zbadać zawartość kontrolki. Możesz również przejść przez zawartość kontrolki drzewa za pomocą funkcji, które umożliwiają pobieranie dojść do elementów nadrzędnych, podrzędnych i elementów równorzędnych określonego elementu. Można nawet sortować elementy podrzędne określonego węzła.
Po zakończeniu pracy z kontrolką upewnij się, że została ona prawidłowo zniszczona. Jeśli kontrolka drzewa znajduje się w oknie dialogowym lub jeśli jest to widok, zostanie on
CTreeCtrl
automatycznie zniszczony. W przeciwnym razie należy upewnić się, że zarówno kontrolka, jak iCTreeCtrl
obiekt zostaną prawidłowo zniszczone.