На этом шаге мы рассмотрим интерфейс "Перетащить и опустить" приемника.
Интерфейс "Перетащить и опустить" приемника управляется с помощью интерфейса IDropTarget. В этом интерфейсе содержатся элементы, приведенные в листинге 1.
Листинг 1. Интерфейс IDropTarget
DECLARE_INTERFACE_ (IDropSource, IUnkown) { // // *** методы lUnknown *** HRESULT Querylnterface (THIS_ REFIID riid, LPVOID FAR* ppvObj); ULONG AddRef (THIS); ULONG Release (THIS); // // *** методы IDropTarget *** HRESULT DragEnter (THIS_ LPDATAOBJECT pDataObject, DWORD grfKeyState, POINT pt, LPDWORD pdwEffect); HRESULT DragOver (THIS_ DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect); HRESULT DragLeave (THIS); HRESULT Drop (THIS_ LPDATAOBJECT pDataObject, DWORD grfKeyState, POINT pt, LPDWORD pdwEffect); };
В состав интерфейса входят пять функций, управляющих операциями "перетаскивания" в источнике. Существует четыре метода IDropTarget - DragEnter(), DragOver(), DragLeave() и Drop().
С помощью функции DragEnter() можно определить, способно ли окно приемника принять перемещаемый объект и какое воздействие окажет перемещение объекта на это окно.
С помощью функции DragOver() пользователь может получить статус происходящей операции "перетаскивания", когда курсор находится над потенциальным окном приемника.
Функция DragLeave() используется для отмены обратной связи в случае, если курсор мыши покидает область окна приемника или если операция перемещения отменена.
Функция Drop() используется для передачи перемещаемых данных (адресуемых параметром pDataObject функции DROP()) целевому приложению.
На следующем шаге мы рассмотрим функции интерфейса " Перетащить и опустить".