Класс COleDropTarget
Предоставляет механизм взаимодействия между окном и библиотеками OLE.
Синтаксис
class COleDropTarget : public CCmdTarget
Участники
Открытые конструкторы
Имя | Описание |
---|---|
COleDropTarget::COleDropTarget | Формирует объект COleDropTarget . |
Открытые методы
Имя | Описание |
---|---|
COleDropTarget::OnDragEnter | Вызывается при первом вводе курсора в окно. |
COleDropTarget::OnDragLeave | Вызывается при перетаскивании курсора из окна. |
COleDropTarget::OnDragOver | Вызывается многократно, когда курсор перетаскивается по окну. |
COleDropTarget::OnDragScroll | Вызывается, чтобы определить, перетаскивается ли курсор в область прокрутки окна. |
COleDropTarget::OnDrop | Вызывается при удалении данных в окно обработчиком по умолчанию. |
COleDropTarget::OnDropEx | Вызывается при удалении данных в окно, начальный обработчик. |
COleDropTarget::Register | Регистрирует окно в качестве допустимого целевого объекта удаления. |
COleDropTarget::Revoke | Приводит к тому, что окно перестанет быть допустимым целевым объектом удаления. |
Замечания
Создание объекта этого класса позволяет окну принимать данные с помощью механизма перетаскивания OLE.
Чтобы получить окно для принятия команд удаления, сначала необходимо создать объект COleDropTarget
класса, а затем вызвать функцию Register с указателем на нужный CWnd
объект в качестве единственного параметра.
Дополнительные сведения о операциях перетаскивания с помощью OLE см. в статье перетаскивание OLE.
Иерархия наследования
COleDropTarget
Требования
Заголовок: afxole.h
COleDropTarget::COleDropTarget
Создает объект класса COleDropTarget
.
COleDropTarget();
Замечания
Вызов регистрации для связывания этого объекта с окном.
COleDropTarget::OnDragEnter
Вызывается платформой при первом перетаскивании курсора в окно.
virtual DROPEFFECT OnDragEnter(
CWnd* pWnd,
COleDataObject* pDataObject,
DWORD dwKeyState,
CPoint point);
Параметры
pWnd
Указывает на окно, в который вводится курсор.
pDataObject
Указывает на объект данных, содержащий данные, которые можно удалить.
dwKeyState
Содержит состояние ключей модификатора. Это сочетание любого числа следующих элементов: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON и MK_RBUTTON.
point
Содержит текущее расположение курсора в координатах клиента.
Возвращаемое значение
Эффект, который приведет к попытке удаления в расположении, указанном в точке. Это может быть одно или несколько следующих элементов:
DROPEFFECT_NONE Не будет разрешено удаление.
DROPEFFECT_COPY будет выполнена операция копирования.
DROPEFFECT_MOVE будет выполнена операция перемещения.
DROPEFFECT_LINK будет установлена ссылка из удаленных данных на исходные данные.
DROPEFFECT_SCROLL операция прокрутки перетаскивания происходит или происходит в целевом объекте.
Замечания
Переопределите эту функцию, чтобы разрешить операции удаления в окне. Реализация по умолчанию вызывает CView::OnDragEnter, которая просто возвращает DROPEFFECT_NONE по умолчанию.
Дополнительные сведения см. в разделе IDropTarget::D ragEnter в пакете SDK для Windows.
COleDropTarget::OnDragLeave
Вызывается платформой, когда курсор покидает окно во время операции перетаскивания.
virtual void OnDragLeave(CWnd* pWnd);
Параметры
pWnd
Указывает на окно, в результате чего курсор уходит.
Замечания
Переопределите эту функцию, если требуется специальное поведение, когда операция перетаскивания покидает указанное окно. Реализация этой функции по умолчанию вызывает CView::OnDragLeave.
Дополнительные сведения см. в разделе IDropTarget::D ragLeave в пакете SDK для Windows.
COleDropTarget::OnDragOver
Вызывается платформой при перетаскивании курсора по окну.
virtual DROPEFFECT OnDragOver(
CWnd* pWnd,
COleDataObject* pDataObject,
DWORD dwKeyState,
CPoint point);
Параметры
pWnd
Указывает на окно, на которое выполняется курсор.
pDataObject
Указывает на объект данных, содержащий данные, которые нужно удалить.
dwKeyState
Содержит состояние ключей модификатора. Это сочетание любого числа следующих элементов: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON и MK_RBUTTON.
point
Содержит текущее расположение курсора в координатах клиента.
Возвращаемое значение
Эффект, который приведет к попытке удаления в расположении, указанном в точке. Это может быть одно или несколько следующих элементов:
DROPEFFECT_NONE Не будет разрешено удаление.
DROPEFFECT_COPY будет выполнена операция копирования.
DROPEFFECT_MOVE будет выполнена операция перемещения.
DROPEFFECT_LINK будет установлена ссылка из удаленных данных на исходные данные.
DROPEFFECT_SCROLL Указывает, что операция прокрутки перетаскивания происходит или происходит в целевом объекте.
Замечания
Эта функция должна быть переопределена, чтобы разрешить операции удаления в окне. Реализация этой функции по умолчанию вызывает CView::OnDragOver, которая возвращает DROPEFFECT_NONE по умолчанию. Так как эта функция вызывается часто во время операции перетаскивания, она должна быть оптимизирована как можно больше.
Дополнительные сведения см. в разделе IDropTarget::D ragOver в пакете SDK для Windows.
Пример
DROPEFFECT COleContainerView::OnDragOver(COleDataObject* pDataObject,
DWORD dwKeyState, CPoint point)
{
UNREFERENCED_PARAMETER(pDataObject);
UNREFERENCED_PARAMETER(point);
DROPEFFECT de = DROPEFFECT_NONE;
//Determine the type of operation
if ((dwKeyState & MK_SHIFT) && (dwKeyState & MK_CONTROL))
de = DROPEFFECT_LINK;
else if (dwKeyState & MK_CONTROL)
de = DROPEFFECT_COPY;
else if (dwKeyState & MK_SHIFT)
de = DROPEFFECT_MOVE;
return de;
}
COleDropTarget::OnDragScroll
Вызывается платформой перед вызовом OnDragEnter или OnDragOver , чтобы определить, находится ли точка в области прокрутки.
virtual DROPEFFECT OnDragScroll(
CWnd* pWnd,
DWORD dwKeyState,
CPoint point);
Параметры
pWnd
Указывает на окно, на который в данный момент выполняется курсор.
dwKeyState
Содержит состояние ключей модификатора. Это сочетание любого числа следующих элементов: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON и MK_RBUTTON.
point
Содержит расположение курсора в пикселях относительно экрана.
Возвращаемое значение
Эффект, который приведет к попытке удаления в расположении, указанном в точке. Это может быть одно или несколько следующих элементов:
DROPEFFECT_NONE Не будет разрешено удаление.
DROPEFFECT_COPY будет выполнена операция копирования.
DROPEFFECT_MOVE будет выполнена операция перемещения.
DROPEFFECT_LINK будет установлена ссылка из удаленных данных на исходные данные.
DROPEFFECT_SCROLL Указывает, что операция прокрутки перетаскивания происходит или происходит в целевом объекте.
Замечания
Переопределите эту функцию, если вы хотите предоставить специальное поведение для этого события. Реализация этой функции по умолчанию вызывает CView::OnDragScroll, которая возвращает DROPEFFECT_NONE и прокручивает окно при перетаскивании курсора в область прокрутки по умолчанию внутри границы окна.
COleDropTarget::OnDrop
Вызывается платформой при возникновении операции удаления.
virtual BOOL OnDrop(
CWnd* pWnd,
COleDataObject* pDataObject,
DROPEFFECT dropEffect,
CPoint point);
Параметры
pWnd
Указывает на окно, на который в данный момент выполняется курсор.
pDataObject
Указывает на объект данных, содержащий данные, которые нужно удалить.
dropEffect
Эффект, выбранный пользователем для операции удаления. Это может быть одно или несколько следующих элементов:
DROPEFFECT_COPY будет выполнена операция копирования.
DROPEFFECT_MOVE будет выполнена операция перемещения.
DROPEFFECT_LINK будет установлена ссылка из удаленных данных на исходные данные.
point
Содержит расположение курсора в пикселях относительно экрана.
Возвращаемое значение
Ненулевое значение, если падение успешно; в противном случае — 0.
Замечания
Платформа сначала вызывает OnDropEx. OnDropEx
Если функция не обрабатывает удаление, платформа вызывает эту функцию-член. OnDrop
Как правило, приложение переопределяет OnDropEx в классе представления для обработки перетаскивания и перетаскивания правой кнопки мыши. Как правило, класс представления OnDrop используется для обработки простого перетаскивания.
Реализация по умолчанию вызывает CView::OnDrop, которая просто возвращает ЗНАЧЕНИЕ FALSE по умолчаниюCOleDropTarget::OnDrop
.
Дополнительные сведения см. в разделе IDropTarget::D rop в пакете SDK для Windows.
COleDropTarget::OnDropEx
Вызывается платформой при возникновении операции удаления.
virtual DROPEFFECT OnDropEx(
CWnd* pWnd,
COleDataObject* pDataObject,
DROPEFFECT dropDefault,
DROPEFFECT dropList,
CPoint point);
Параметры
pWnd
Указывает на окно, на который в данный момент выполняется курсор.
pDataObject
Указывает на объект данных, содержащий данные, которые нужно удалить.
dropDefault
Эффект, выбранный пользователем для операции удаления по умолчанию на основе текущего состояния ключа. Это может быть DROPEFFECT_NONE. Эффекты удаления рассматриваются в разделе "Примечания".
dropList
Список эффектов удаления, поддерживаемых источником перетаскивания. Значения эффектов удаления можно объединить с помощью побитовой операции OR (|
). Эффекты удаления рассматриваются в разделе "Примечания".
point
Содержит расположение курсора в пикселях относительно экрана.
Возвращаемое значение
Эффект удаления, который привел к попытке удаления в расположении, указанном в точке. Эффекты удаления рассматриваются в разделе "Примечания".
Замечания
Платформа сначала вызывает эту функцию. Если он не обрабатывает удаление, платформа вызывает OnDrop. Как правило, вы переопределите OnDropEx в классе представления для поддержки перетаскивания правой кнопки мыши. Как правило, класс представления OnDrop используется для обработки случаев поддержки простого перетаскивания.
Реализация по умолчанию COleDropTarget::OnDropEx
вызывает CView::OnDropEx. По умолчанию CView::OnDropEx просто возвращает фиктивное значение, указывающее , что функция-член OnDrop должна вызываться.
Эффекты удаления описывают действие, связанное с операцией удаления. См. следующий список эффектов удаления:
DROPEFFECT_NONE Не будет разрешено удаление.
DROPEFFECT_COPY будет выполнена операция копирования.
DROPEFFECT_MOVE будет выполнена операция перемещения.
DROPEFFECT_LINK будет установлена ссылка из удаленных данных на исходные данные.
DROPEFFECT_SCROLL Указывает, что операция прокрутки перетаскивания происходит или происходит в целевом объекте.
Дополнительные сведения см. в разделе IDropTarget::D rop в пакете SDK для Windows.
COleDropTarget::Register
Вызовите эту функцию, чтобы зарегистрировать окно с помощью библиотек DLL OLE в качестве допустимого целевого объекта удаления.
BOOL Register(CWnd* pWnd);
Параметры
pWnd
Указывает на окно, которое должно быть зарегистрировано в качестве целевого объекта удаления.
Возвращаемое значение
Ненулевое значение, если регистрация выполнена успешно; в противном случае — 0.
Замечания
Эта функция должна вызываться для принятия операций удаления.
Дополнительные сведения см. в разделе RegisterDragDrop в пакете SDK для Windows.
COleDropTarget::Revoke
Вызовите эту функцию перед уничтожением любого окна, зарегистрированного в качестве целевого объекта удаления через вызов регистрации , чтобы удалить его из списка целевых объектов удаления.
virtual void Revoke();
Замечания
Эта функция вызывается автоматически из обработчика OnDefx для зарегистрированного окна, поэтому обычно не требуется явно вызывать эту функцию.
Дополнительные сведения см. в разделе "ОтзывDragDrop " в пакете SDK для Windows.
См. также
Пример HIERSVR MFC
Пример OCLIENT MFC
Класс CCmdTarget
Диаграмма иерархии
Класс COleDropSource