На этом шаге мы рассмотрим интерфейс "Перетащить и опустить" источника.
Интерфейс "Перетащить и опустить" источника управляется с помощью интерфейса IDropSource. В этом интерфейсе содержатся элементы, приведенные в листинге 1.
Листинг 1. Интерфейс IDropSource
DECLARE_INTERFACE_ (IDropSource, IUnkown)
{
// *** методы IUnknown ***
HRESULT Querylnterface (THIS. REFIID riid, LPVOID FAR* ppvObj);
ULONG AddRef (THIS);
ULONG Release (THIS);
// *** методы IDropSource ***
HRESULT QueryContinueDrag (THIS_ BOOL fEscapePressed, DWORD grfKeyState);
HRESULT GiveFeedBack (THIS_ DWORD dwEffect);
};
В состав интерфейса входит пять функций, управляющих в источнике операциями "перетаскивания". В IDropSource существуют два метода - QueryContinueDrag() и GiveFeedBack().
С помощью функции QueryContinueDrag() можно определить, следует ли продолжать операцию перетаскивания.
Функция GiveFeedBack() используется для управления обратной связью с пользователем во время перетаскивания объекта. Обратная связь включает в себя два различных аспекта: может измениться форма указателя и внешний вид перемещаемых данных.
На следующем шаге мы рассмотрим интерфейс "Перетащить и опустить" приемника.