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
,然後使用所需CWnd
物件的指標呼叫 Register 函式做為唯一的參數。
如需使用 OLE 拖放作業的詳細資訊,請參閱 OLE 拖放一文。
繼承階層架構
COleDropTarget
需求
標頭: afxole.h
COleDropTarget::COleDropTarget
建構 類別 COleDropTarget
的物件。
COleDropTarget();
備註
呼叫 Register 將此物件與視窗產生關聯。
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。
如需詳細資訊,請參閱 Windows SDK 中的 IDropTarget::D ragEnter 。
COleDropTarget::OnDragLeave
當游標在拖曳作業生效時離開視窗時,由架構呼叫。
virtual void OnDragLeave(CWnd* pWnd);
參數
pWnd
指向游標離開的視窗。
備註
如果您想要在拖曳作業離開指定的視窗時的特殊行為,請覆寫此函式。 此函式的預設實作會呼叫 CView::OnDragLeave。
如需詳細資訊,請參閱 Windows SDK 中的 IDropTarget::D ragLeave 。
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。 由於此函式在拖放作業期間經常呼叫,因此應該儘可能優化。
如需詳細資訊,請參閱 Windows SDK 中的 IDropTarget::D ragOver 。
範例
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 是用來處理簡單的拖放作業。
默認實作 COleDropTarget::OnDrop
的呼叫 CView::OnDrop,預設只會傳回 FALSE。
如需詳細資訊,請參閱 Windows SDK 中的 IDropTarget::D rop 。
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 是用來處理簡單拖放支援案例。
呼叫 CView::OnDropEx 的預設實作COleDropTarget::OnDropEx
。 根據預設, CView::OnDropEx 只會傳回虛擬值,表示 應該呼叫 OnDrop 成員函式。
卸除效果描述與卸除作業相關聯的動作。 請參閱下列卸除效果清單:
DROPEFFECT_NONE不允許卸除。
DROPEFFECT_COPY將會執行複製作業。
DROPEFFECT_MOVE將會執行移動作業。
DROPEFFECT_LINK建立從卸除數據到原始數據的連結。
DROPEFFECT_SCROLL 指出拖曳卷動作業即將發生或發生於目標中。
如需詳細資訊,請參閱 Windows SDK 中的 IDropTarget::D rop 。
COleDropTarget::Register
呼叫此函式,以將窗口註冊為有效的置放目標 OLE DLL。
BOOL Register(CWnd* pWnd);
參數
pWnd
指向要註冊為置放目標的視窗。
傳回值
如果註冊成功,則為非零;否則為 0。
備註
必須呼叫此函式,才能接受卸除作業。
如需詳細資訊,請參閱 Windows SDK 中的 RegisterDragDrop 。
COleDropTarget::Revoke
先呼叫此函式,再終結任何已註冊為置放目標的視窗,並透過呼叫 Register 將其從置放目標清單中移除。
virtual void Revoke();
備註
從已註冊之視窗的 OnDestroy 處理程式自動呼叫此函式,因此通常不需要明確呼叫此函式。
如需詳細資訊,請參閱 Windows SDK 中的 RevokeDragDrop 。
另請參閱
MFC 範例 HIERSVR
MFC 範例 OCLIENT
CCmdTarget 類別
階層架構圖表
COleDropSource 類別