分享方式:


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

繼承階層架構

CObject

CCmdTarget

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 類別