Поделиться через


Класс COleDropSource

Позволяет перетаскивать данные в целевой объект удаления.

Синтаксис

class COleDropSource : public CCmdTarget

Участники

Открытые конструкторы

Имя Описание
COleDropSource::COleDropSource Формирует объект COleDropSource.

Открытые методы

Имя Описание
COleDropSource::GiveFeedback Изменяет курсор во время операции перетаскивания.
COleDropSource::OnBeginDrag Обрабатывает захват мыши во время операции перетаскивания.
COleDropSource::QueryContinueDrag Проверяет, следует ли продолжить перетаскивание.

Замечания

Класс COleDropTarget обрабатывает полученную часть операции перетаскивания. Объект COleDropSource отвечает за определение начала операции перетаскивания, предоставление обратной связи во время операции перетаскивания и определение окончания операции перетаскивания.

Чтобы использовать COleDropSource объект, просто вызовите конструктор. Это упрощает процесс определения событий, таких как щелчк мыши, начинает операцию перетаскивания с помощью функции COleDataSource::D oDragDrop, COleClientItem::D oDragDrop или COleServerItem::D oDragDrop. Эти функции создадут COleDropSource для вас объект. Может потребоваться изменить поведение COleDropSource по умолчанию переопределиемых функций. Эти функции-члены будут вызываться в соответствующее время платформой.

Дополнительные сведения о операциях перетаскивания с помощью OLE см. в статье перетаскивание OLE.

Дополнительные сведения см. в разделе IDropSource в пакете SDK для Windows.

Иерархия наследования

CObject

CCmdTarget

COleDropSource

Требования

Заголовок: afxole.h

COleDropSource::COleDropSource

Формирует объект COleDropSource.

COleDropSource();

COleDropSource::GiveFeedback

Вызывается платформой после вызова COleDropTarget::OnDragOver или COleDropTarget::D ragEnter.

virtual SCODE GiveFeedback(DROPEFFECT dropEffect);

Параметры

dropEffect
Эффект, который вы хотите отобразить пользователю, обычно указывая, что произойдет, если падение произошло на этом этапе с выбранными данными. Как правило, это значение, возвращаемое последним вызовом CView::OnDragEnter или CView::OnDragOver. Это может быть одно или несколько следующих элементов:

  • DROPEFFECT_NONE Не будет разрешено удаление.

  • DROPEFFECT_COPY будет выполнена операция копирования.

  • DROPEFFECT_MOVE будет выполнена операция перемещения.

  • DROPEFFECT_LINK будет установлена ссылка из удаленных данных на исходные данные.

  • DROPEFFECT_SCROLL операция прокрутки перетаскивания происходит или происходит в целевом объекте.

Возвращаемое значение

Возвращает DRAGDROP_S_USEDEFAULTCURSORS, если выполняется перетаскивание, NOERROR, если это не так.

Замечания

Переопределите эту функцию, чтобы предоставить пользователю отзыв о том, что произойдет, если на данный момент произошло падение. Реализация по умолчанию использует курсоры OLE по умолчанию. Дополнительные сведения о операциях перетаскивания с помощью OLE см. в статье перетаскивание OLE.

Дополнительные сведения см. в разделе IDropSource::GiveFeedback, IDropTarget::D ragOver и IDropTarget::D ragEnter в пакете SDK для Windows.

COleDropSource::OnBeginDrag

Вызывается платформой, когда происходит событие, которое может начать операцию перетаскивания, например нажатие левой кнопки мыши.

virtual BOOL OnBeginDrag(CWnd* pWnd);

Параметры

pWnd
Указывает на окно, содержащее выбранные данные.

Возвращаемое значение

Ненулевое значение, если разрешено перетаскивание, в противном случае — значение 0.

Замечания

Переопределите эту функцию, если вы хотите изменить способ запуска процесса перетаскивания. Реализация по умолчанию фиксирует мышь и остается в режиме перетаскивания, пока пользователь не нажимает левую или правую кнопку мыши или нажимает ESC, в то время как она освобождает мышь.

COleDropSource::QueryContinueDrag

После начала перетаскивания эта функция вызывается платформой повторно, пока операция перетаскивания не будет отменена или завершена.

virtual SCODE QueryContinueDrag(
    BOOL bEscapePressed,
    DWORD dwKeyState);

Параметры

bEscapePressed
Указывает, нажимается ли клавиша ESC с момента последнего вызова COleDropSource::QueryContinueDrag.

dwKeyState
Содержит состояние клавиш модификатора на клавиатуре. Это сочетание любого числа следующих элементов: MK_CONTROL, MK_SHIFT, MK_ALT, MK_LBUTTON, MK_MBUTTON и MK_RBUTTON.

Возвращаемое значение

DRAGDROP_S_CANCEL, если клавиша ESC или правая кнопка нажимается, или левая кнопка возникает перед началом перетаскивания. DRAGDROP_S_DROP, если должна произойти операция удаления. В противном случае S_OK.

Замечания

Переопределите эту функцию, если вы хотите изменить точку, в которой перетаскивание отменено или происходит удаление.

Реализация по умолчанию инициирует удаление или отменяет перетаскивание следующим образом. Она отменяет операцию перетаскивания при нажатии клавиши ESC или правой кнопки мыши. Он инициирует операцию удаления при появлении левой кнопки мыши после начала перетаскивания. В противном случае он возвращает S_OK и не выполняет дальнейшие операции.

Так как эта функция вызывается часто, она должна быть оптимизирована как можно больше.

См. также

Пример HIERSVR MFC
Пример OCLIENT MFC
Класс CCmdTarget
Диаграмма иерархии