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。
點
包含用戶端座標中游標的目前位置。
傳回值
如果點所 指定位置嘗試卸載,則會產生的效果。 它可以是下列其中一或多個專案:
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。
點
包含用戶端座標中游標的目前位置。
傳回值
如果點所 指定位置嘗試卸載,則會產生的效果。 它可以是下列其中一或多個專案:
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。
點
包含相對於螢幕的資料指標位置,以圖元為單位。
傳回值
如果點所 指定位置嘗試卸載,則會產生的效果。 它可以是下列其中一或多個專案:
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建立從卸載資料到原始資料的連結。
點
包含相對於螢幕的資料指標位置,以圖元為單位。
傳回值
如果卸載成功,則為非零;否則為 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 ( |
) 運算來結合。 卸載效果會在一節中討論。
點
包含相對於螢幕的資料指標位置,以圖元為單位。
傳回值
從點 所 指定位置的置放嘗試所產生的置放效果。 卸載效果會在一節中討論。
備註
架構會先呼叫此函式。 如果它未處理卸載,架構就會呼叫 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 類別
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應