Udostępnij za pośrednictwem


Przeciąganie obrazów z listy obrazów

Obiekt CImageList zawiera funkcje przeciągania obrazu na ekranie. Funkcje przeciągania przesuwają obraz płynnie, kolorowo i bez migania kursora. Obrazy maskowane i niemaskowane można przeciągać.

Funkcja składowa BeginDrag rozpoczyna operację przeciągania. Parametry obejmują indeks obrazu do przeciągania i lokalizacji punktu gorącego na obrazie. Punkt gorąca to pojedynczy piksel, który funkcje przeciągania rozpoznają jako dokładną lokalizację ekranu obrazu. Zazwyczaj aplikacja ustawia punkt gorąca, tak aby pokrywała się z gorącym punktem kursora myszy. Funkcja składowa DragMove przenosi obraz do nowej lokalizacji.

Funkcja składowa DragEnter ustawia początkową pozycję obrazu przeciągania w oknie i rysuje obraz w pozycji. Parametry zawierają wskaźnik do okna, w którym ma być rysowanie obrazu i punkt określający współrzędne pozycji początkowej w oknie. Współrzędne są względne względem lewego górnego rogu okna, a nie obszaru klienta. To samo dotyczy wszystkich funkcji przeciągania obrazów, które przyjmują współrzędne jako parametry. Oznacza to, że podczas określania współrzędnych należy zrekompensować szerokość elementów okna, takich jak obramowanie, pasek tytułu i pasek menu. W przypadku określenia uchwytu okna o wartości NULL podczas wywoływania DragEnterfunkcji przeciągania rysuje obraz w kontekście urządzenia skojarzonego z oknem pulpitu, a współrzędne są względem lewego górnego rogu ekranu.

DragEnter blokuje wszystkie inne aktualizacje danego okna podczas operacji przeciągania. Jeśli podczas operacji przeciągania musisz wykonać dowolny rysunek, taki jak wyróżnianie celu operacji przeciągania i upuszczania, możesz tymczasowo ukryć przeciągnięty obraz za pomocą funkcji składowej DragLeave . Można również użyć funkcji składowej DragShowNoLock .

Wywołaj metodę EndDrag po zakończeniu przeciągania obrazu.

Funkcja składowa SetDragCursorImage tworzy nowy obraz przeciągania, łącząc dany obraz (zazwyczaj obraz kursora myszy) z bieżącym obrazem przeciągania. Ponieważ funkcje przeciągania używają nowego obrazu podczas operacji przeciągania, należy użyć funkcji Windows ShowCursor , aby ukryć rzeczywisty kursor myszy po wywołaniu metody SetDragCursorImage. W przeciwnym razie system może wydawać się mieć dwa kursory myszy na czas trwania operacji przeciągania.

Gdy aplikacja wywołuje BeginDragmetodę , system tworzy tymczasową, wewnętrzną listę obrazów i kopiuje określony obraz przeciągania do listy wewnętrznej. Wskaźnik do tymczasowej listy obrazów przeciągania można pobrać przy użyciu funkcji składowej GetDragImage . Funkcja pobiera również bieżące położenie przeciągania i przesunięcie obrazu przeciągania względem położenia przeciągania.

Zobacz też

Korzystanie z CImageList
Kontrolki