Operazioni di trascinamento e rilascio del controllo Tree
Un controllo albero (CTreeCtrl) invia una notifica quando l'utente inizia a trascinare un elemento. Il controllo invia un messaggio di notifica TVN_BEGINDRAG quando l'utente inizia a trascinare un elemento con il pulsante sinistro del mouse e un messaggio di notifica TVN_BEGINRDRAG quando l'utente inizia a trascinare con il pulsante destro. È possibile impedire a un controllo albero di inviare queste notifiche assegnando al controllo albero lo stile di TVS_DISABLEDRAGDROP.
Si ottiene un'immagine da visualizzare durante un'operazione di trascinamento chiamando la funzione membro CreateDragImage . Il controllo albero crea una bitmap di trascinamento in base all'etichetta dell'elemento trascinato. Il controllo albero crea quindi un elenco di immagini, aggiunge la bitmap e restituisce un puntatore all'oggetto CImageList .
È necessario specificare il codice che trascina effettivamente l'elemento. Ciò comporta in genere l'uso delle funzionalità di trascinamento delle funzioni dell'elenco di immagini e l'elaborazione dei messaggi WM_MOUedizione Standard MOVE e WM_LBUTTONUP (o WM_RBUTTONUP) inviati dopo l'avvio dell'operazione di trascinamento. Per altre informazioni sulle funzioni dell'elenco di immagini, vedere CImageList negli elenchi di riferimenti e immagini MFC in Windows SDK. Per altre informazioni sul trascinamento di un elemento del controllo albero, vedere Trascinamento dell'elemento visualizzazione albero anche in Windows SDK.
Se gli elementi in un controllo albero devono essere le destinazioni di un'operazione di trascinamento della selezione, è necessario sapere quando il cursore del mouse si trova su un elemento di destinazione. È possibile scoprire chiamando la funzione membro HitTest . Specificare un punto e un numero intero o l'indirizzo di una struttura TVHITTESTINFO contenente le coordinate correnti del cursore del mouse. Quando la funzione termina, l'intero o la struttura contiene un flag che indica la posizione del cursore del mouse rispetto al controllo albero. Se il cursore si trova su un elemento nel controllo albero, la struttura contiene anche l'handle dell'elemento.
È possibile indicare che un elemento è la destinazione di un'operazione di trascinamento della selezione chiamando la funzione membro SetItem per impostare lo stato sul TVIS_DROPHILITED
valore. Un elemento con questo stato viene disegnato nello stile utilizzato per indicare una destinazione di trascinamento della selezione.