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 。
繼承階層架構
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,而且不會執行任何進一步的作業。
由於此函式經常呼叫,因此應該儘可能優化。