Operacje przeciągania i upuszczania formantu drzewa
Kontrolka drzewa (CTreeCtrl) wysyła powiadomienie, gdy użytkownik zacznie przeciągać element. Kontrolka wysyła komunikat powiadomienia TVN_BEGINDRAG , gdy użytkownik zacznie przeciągać element za pomocą lewego przycisku myszy i komunikat powiadomienia TVN_BEGINRDRAG , gdy użytkownik zacznie przeciągać prawym przyciskiem. Możesz zapobiec wysyłaniu tych powiadomień przez kontrolkę drzewa, nadając kontrolce drzewa styl TVS_DISABLEDRAGDROP.
Obraz do wyświetlenia podczas operacji przeciągania można uzyskać, wywołując funkcję składową CreateDragImage . Kontrolka drzewa tworzy przeciągającą mapę bitową na podstawie etykiety przeciąganego elementu. Następnie kontrolka drzewa tworzy listę obrazów, dodaje do niej mapę bitową i zwraca wskaźnik do obiektu CImageList .
Musisz podać kod, który faktycznie przeciąga element. Zwykle wiąże się to z użyciem funkcji przeciągania funkcji listy obrazów i przetwarzania WM_MOUSEMOVE i WM_LBUTTONUP (lub WM_RBUTTONUP) komunikatów wysyłanych po rozpoczęciu operacji przeciągania. Aby uzyskać więcej informacji na temat funkcji listy obrazów, zobacz CImageList w dokumentacji I listach obrazów MFC w zestawie Windows SDK. Aby uzyskać więcej informacji na temat przeciągania elementu kontrolki drzewa, zobacz Przeciąganie elementu widoku drzewa, również w zestawie SDK systemu Windows.
Jeśli elementy w kontrolce drzewa mają być elementami docelowymi operacji przeciągania i upuszczania, musisz wiedzieć, kiedy kursor myszy znajduje się na elemencie docelowym. Możesz dowiedzieć się, wywołując funkcję składową HitTest . Należy określić punkt i liczbę całkowitą lub adres struktury TVHITTESTINFO , która zawiera bieżące współrzędne kursora myszy. Po powrocie funkcji liczba całkowita lub struktura zawiera flagę wskazującą lokalizację kursora myszy względem kontrolki drzewa. Jeśli kursor znajduje się nad elementem w kontrolce drzewa, struktura zawiera również uchwyt elementu.
Możesz wskazać, że element jest elementem docelowym operacji przeciągania i upuszczania, wywołując funkcję składową SetItem , aby ustawić stan na TVIS_DROPHILITED
wartość. Element o tym stanie jest rysowany w stylu używanym do wskazywania obiektu docelowego przeciągania i upuszczania.