Operações de arrastar e soltar de controle de árvore
Um controle de árvoreCTreeCtrl() para enviar uma notificação quando o usuário para arraste um item. O controle envia uma notificação de TVN_BEGINDRAG quando o usuário inicia a arraste um item com o botão esquerdo do mouse e uma notificação de TVN_BEGINRDRAG quando o usuário inicia a arraste com o botão direito. Você pode impedir que um controle de árvore envie essas mensagens de notificação do controle de árvore o estilo de TVS_DISABLEDRAGDROP .
Você obtém uma imagem a ser exibida durante uma operação de arrastar chamando a função de membro de CreateDragImage . O controle de árvore cria um bitmap arrastando baseado no rótulo do item que está sendo arrastado. O controle de árvore cria uma lista de imagem, adiciona o bitmap, e o retorna um ponteiro para o objeto de CImageList .
Você deve fornecer o código que realmente arrasta o item. Isso envolve normalmente utilizar os recursos arrastando da lista de funções de imagem e processar mensagens de WM_MOUSEMOVE e de WM_LBUTTONUP (ou) WM_RBUTTONUPenviadas depois que a operação de arrastar foi iniciado. Para obter mais informações sobre as funções da lista de imagem, consulte CImageListna referência de MFC e Listas de imagem em Windows SDK. Para obter mais informações sobre como arrastar uma árvore controle o item, consulte Arrastando o item de exibição de árvore, também em Windows SDK.
Se os itens no controle de árvore são ser os destinos de uma operação de arrastar e soltar, você precisa saber quando o cursor do mouse em um item de destino. Você pode localizar chamando a função de membro de HitTest . Você especifica um ponto e o inteiro, ou o endereço de uma estrutura de TVHITTESTINFO que contém as coordenadas atuais de cursor do mouse em. Quando a função retorna o inteiro, ou a estrutura contém um sinalizador que indica o local do cursor do mouse em relação ao controle de árvore. Se o cursor estiver em um item no controle de árvore, a estrutura contém o identificador do item também.
Você pode indicar que um item é o destino de uma operação de arrastar e soltar chamando a função de membro de SetItem para definir o estado como o valor de TVIS_DROPHILITED . Um item que tenha esse estado é desenhado em estilo usado para indicar um destino de arrastar e soltar.