Usando controles de árvore
O uso típico de um controle de árvore (CTreeCtrl) segue o padrão abaixo:
O controle é criado. Se o controle for especificado em um modelo de caixa de diálogo ou se você estiver usando
CTreeView
, a criação será automática quando a caixa de diálogo for exbida ou criada. Se você quiser criar o controle de árvore como uma janela filho de alguma outra janela, use a função membro Criar.Se você quiser que o controle de árvore use imagens, defina uma lista de imagens chamando SetImageList. Você também pode alterar o recuo chamando SetIndent. Um bom momento para fazer é em OnInitDialog (para controles em caixas de diálogo) ou OnInitialUpdate (para exibições).
Coloque dados no controle chamando a função InsertItem de
CTreeCtrl
uma vez para cada item de dados.InsertItem
retorna um identificador para o item que você pode usar para se referir a ele posteriormente, como ao adicionar itens filho. Um bom momento para inicializar os dados é emOnInitDialog
(para controles em caixas de diálogo) ouOnInitialUpdate
(para exibições).À medida que o usuário interage com o controle, ele enviará várias mensagens de notificação. Você pode especificar uma função para manipular cada uma das mensagens que deseja manipular adicionando uma macro ON_NOTIFY_REFLECT no mapa de mensagens da janela do controle ou adicionando uma macro ON_NOTIFY ao mapa de mensagens da janela pai. Consulte Mensagens de notificação de controle de árvore posteriormente neste tópico para obter uma lista de possíveis notificações.
Chame as várias funções de membro Set para definir valores para o controle. As alterações que você pode fazer incluem definir o recuo e alterar o texto, a imagem ou os dados associados a um item.
Use as várias funções Get para examinar o conteúdo do controle. Você também pode percorrer o conteúdo do controle de árvore com funções que permitem recuperar identificadores para pais, filhos e irmãos de um item especificado. Você pode até classificar os filhos de um nó específico.
Quando terminar com o controle, verifique se ele foi destruído corretamente. Se o controle de árvore estiver em uma caixa de diálogo ou se for uma exibição, ele e o objeto
CTreeCtrl
serão destruídos automaticamente. Caso contrário, você precisa garantir que o controle e o objetoCTreeCtrl
sejam devidamente destruídos.