Operaciones de arrastrar y colocar del control de árbol
Un control de árbol (CTreeCtrl) envía una notificación cuando el usuario comienza a arrastrar un elemento. El control envía un mensaje de notificación TVN_BEGINDRAG cuando el usuario comienza a arrastrar un elemento con el botón izquierdo del mouse y un mensaje de notificación TVN_BEGINRDRAG cuando el usuario comienza a arrastrar con el botón derecho. Puede evitar que un control de árbol envíe estas notificaciones proporcionando al control de árbol el estilo TVS_DISABLEDRAGDROP.
Para obtener una imagen que se va a mostrar durante una operación de arrastre, llame a la función miembro CreateDragImage. El control de árbol crea un mapa de bits de arrastre basado en la etiqueta del elemento que se está arrastrando. A continuación, el control de árbol crea una lista de imágenes, le agrega el mapa de bits y devuelve un puntero al objeto CImageList.
Debe proporcionar el código que realmente arrastra el elemento. Normalmente, esto implica el uso de las características de arrastre de las funciones de lista de imágenes y el procesamiento de los mensajes WM_MOUSEMOVE y WM_LBUTTONUP (o WM_RBUTTONUP) enviados después de que se haya iniciado la operación de arrastre. Para obtener más información sobre las funciones de lista de imágenes, consulte CImageList en la referencia MFC y Listas de imágenes en Windows SDK. Para obtener más información sobre cómo arrastrar un elemento de control de árbol, consulte Arrastrar el elemento de vista de árbol, también en Windows SDK.
Si los elementos de un control de árbol deben ser los destinos de una operación de arrastrar y colocar, debe saber cuándo se encuentra el cursor del mouse en un elemento de destino. Para averiguarlo, llame a la función miembro HitTest. Se especifica un punto y un entero, o la dirección de una estructura TVHITTESTINFO que contiene las coordenadas actuales del cursor del mouse. Cuando se devuelve la función, el entero o la estructura contiene una marca que indica la ubicación del cursor del mouse con respecto al control de árbol. Si el cursor está sobre un elemento del control de árbol, la estructura también contiene el manipulador del elemento.
Puede indicar que un elemento es el destino de una operación de arrastrar y colocar llamando a la función miembro SetItem para establecer el estado en el valor TVIS_DROPHILITED
. Un elemento que tiene este estado se dibuja en el estilo utilizado para indicar un destino de arrastrar y colocar.