共用方式為


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 拖放 一文

如需詳細資訊,請參閱 Windows SDK 中的 IDropSource

繼承階層架構

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 拖放 一文

如需詳細資訊,請參閱 Windows SDK 中的 IDropSource::GiveFeedback IDropTarget::D ragOver IDropTarget::D ragEnter

COleDropSource::OnBeginDrag

架構會在可能發生可能開始拖曳作業的事件時呼叫,例如按下滑鼠左鍵。

virtual BOOL OnBeginDrag(CWnd* pWnd);

參數

pWnd
指向包含所選取資料的視窗。

傳回值

如果允許拖曳,則為非零,否則為 0。

備註

如果您想要修改拖曳程式啟動的方式,請覆寫此函式。 預設實作會擷取滑鼠,並停留在拖曳模式中,直到使用者按一下左右滑鼠按鍵或按 ESC 鍵,此時會放開滑鼠。

COleDropSource::QueryContinueDrag

拖曳開始之後,架構會重複呼叫此函式,直到拖曳作業取消或完成為止。

virtual SCODE QueryContinueDrag(
    BOOL bEscapePressed,
    DWORD dwKeyState);

參數

bEscapePressed
指出自上次呼叫 COleDropSource::QueryContinueDrag 以來,ESC 鍵是否已按下。

dwKeyState
包含鍵盤上修飾詞按鍵的狀態。 這是下列任何數目的組合:MK_CONTROL、MK_SHIFT、MK_ALT、MK_LBUTTON、MK_MBUTTON和MK_RBUTTON。

傳回值

如果按下 ESC 鍵或右鍵,或在拖曳開始之前引發左按鈕,DRAGDROP_S_CANCEL。 如果應該執行卸載作業,DRAGDROP_S_DROP。 否則S_OK。

備註

如果您想要變更拖曳取消或卸載的點,請覆寫此函式。

預設實作會起始拖放或取消拖曳,如下所示。 當按下 ESC 鍵或滑鼠右鍵時,它會取消拖曳作業。 當滑鼠左鍵在拖曳開始後引發時,它會起始置放作業。 否則,它會傳回S_OK,而且不會執行任何進一步的作業。

由於此函式經常呼叫,因此應該盡可能優化。

另請參閱

MFC 範例 HIERSVR
MFC 範例 OCLIENT
CCmdTarget 類別
階層架構圖表