Trascinamento di immagini da un elenco di immagini
CImageList include funzioni per il trascinamento di un'immagine sullo schermo. Le funzioni di trascinamento spostano un'immagine in modo uniforme, a colori e senza lampeggiare del cursore. Le immagini mascherate e non mascherate possono essere trascinate.
La funzione membro BeginDrag avvia un'operazione di trascinamento. I parametri includono l'indice dell'immagine da trascinare e la posizione del punto critico all'interno dell'immagine. Il punto critico è un singolo pixel che le funzioni di trascinamento riconoscono come la posizione esatta dello schermo dell'immagine. In genere, un'applicazione imposta il punto attivo in modo che coincida con il punto attivo del cursore del mouse. La funzione membro DragMove sposta l'immagine in una nuova posizione.
La funzione membro DragEnter imposta la posizione iniziale dell'immagine di trascinamento all'interno di una finestra e disegna l'immagine nella posizione. I parametri includono un puntatore alla finestra in cui disegnare l'immagine e un punto che specifica le coordinate della posizione iniziale all'interno della finestra. Le coordinate sono relative all'angolo superiore sinistro della finestra, non all'area client. Lo stesso vale per tutte le funzioni di trascinamento delle immagini che accettano coordinate come parametri. Ciò significa che è necessario compensare la larghezza degli elementi della finestra, ad esempio il bordo, la barra del titolo e la barra dei menu, quando si specificano le coordinate. Se si specifica un handle di finestra NULL quando si chiama DragEnter
, le funzioni di trascinamento disegnano l'immagine nel contesto di dispositivo associato alla finestra desktop e le coordinate sono relative all'angolo superiore sinistro dello schermo.
DragEnter
blocca tutti gli altri aggiornamenti alla finestra specificata durante l'operazione di trascinamento. Se è necessario eseguire un disegno durante un'operazione di trascinamento, ad esempio l'evidenziazione della destinazione di un'operazione di trascinamento della selezione, è possibile nascondere temporaneamente l'immagine trascinata usando la funzione membro DragLeave . È anche possibile usare la funzione membro DragShowNoLock .
Chiama EndDrag al termine del trascinamento dell'immagine.
La funzione membro SetDragCursorImage crea una nuova immagine di trascinamento combinando l'immagine specificata (in genere un'immagine del cursore del mouse) con l'immagine di trascinamento corrente. Poiché le funzioni di trascinamento usano la nuova immagine durante un'operazione di trascinamento, è consigliabile usare la funzione Windows ShowCursor per nascondere il cursore del mouse effettivo dopo aver chiamato SetDragCursorImage
. In caso contrario, il sistema potrebbe avere due cursori del mouse per la durata dell'operazione di trascinamento.
Quando un'applicazione chiama BeginDrag
, il sistema crea un elenco di immagini interno temporaneo e copia l'immagine di trascinamento specificata nell'elenco interno. È possibile recuperare un puntatore all'elenco di immagini di trascinamento temporaneo usando la funzione membro GetDragImage . La funzione recupera anche la posizione di trascinamento corrente e l'offset dell'immagine di trascinamento rispetto alla posizione di trascinamento.