Класс 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.
Иерархия наследования
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
Диаграмма иерархии