Share via


IDropTarget::D ragEnter 方法 (oleidl.h)

指出是否可以接受卸除,如果是,則表示卸除的效果。

語法

HRESULT DragEnter(
  [in]      IDataObject *pDataObj,
  [in]      DWORD       grfKeyState,
  [in]      POINTL      pt,
  [in, out] DWORD       *pdwEffect
);

參數

[in] pDataObj

數據物件上 IDataObject 介面的指標。 此資料物件包含拖放作業中傳輸的數據。 如果卸載發生,此數據物件將會併入目標中。

[in] grfKeyState

鍵盤上鍵盤修飾詞鍵的目前狀態。 可能的值可以是任何旗標的組合MK_CONTROL、MK_SHIFT、MK_ALT、MK_BUTTON、MK_LBUTTON、MK_MBUTTON和MK_RBUTTON。

[in] pt

POINTL 結構,其中包含螢幕座標中的目前游標座標。

[in, out] pdwEffect

在輸入上,指向 DoDragDrop 函式之 pdwEffect 參數值的指標。 傳回時,必須包含其中一個 DROPEFFECT 旗標,這表示卸除作業的結果。

傳回值

此方法會在成功時傳回S_OK。 其他可能的值包括下列專案。

傳回碼 Description
E_UNEXPECTED
已發生未預期的錯誤。
E_INVALIDARG
pdwEffect 參數在輸入時為 NULL
E_OUTOFMEMORY
此作業的記憶體不足。

備註

您不會直接呼叫 DragEnter ;相反地, DoDragDrop 函式會呼叫它,以判斷使用者第一次將滑鼠拖曳到置放目標的已註冊視窗時的效果。

若要實作 DragEnter,您必須檢查三件事,判斷目標是否可以使用源數據物件中的數據:

  • 數據物件所指定的格式和媒體
  • pdwEffect 的輸入值
  • 修飾詞索引鍵的狀態
若要檢查格式和中度,請使用傳入 pDataObject 參數的 IDataObject 指標來呼叫 IDataObject::EnumFormatEtc,以便您可以列舉源數據對象支援的 FORMATETC 結構。 然後呼叫 IDataObject::QueryGetData ,藉由檢查數據物件指定的格式和媒體,判斷數據物件是否可以在目標上轉譯數據。

IDropTarget::D ragEnter 的專案上,pdwEffect 參數會設定為 DoDragDrop 函式的 pdwOkEffect 參數所提供的效果。 IDropTarget::D ragEnter 方法必須選擇其中一個效果或停用卸除。

下列修飾詞索引鍵會影響卸除的結果。

按鍵組合 User-Visible 意見反應 置放效果
CTRL + SHIFT = DROPEFFECT_LINK
CTRL + DROPEFFECT_COPY
沒有按鍵或SHIFT DROPEFFECT_MOVE
 

傳回時,方法必須將效果,其中一個 DROPEFFECT 旗標寫入 pdwEffect 參數。 DoDragDrop 接著會採用此參數,並將其寫入其 pdwEffect 參數。 您可以透過 pdwEffect 參數中的 DoDragDrop,將卸除的效果傳達回來源。 DoDragDrop 函式接著會呼叫 IDropSource::GiveFeedback,讓來源應用程式可以透過目標視窗向用戶顯示適當的視覺回饋。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 oleidl.h

另請參閱

DragEnter

IDropSource

IDropSourceNotify

IDropTarget

RegisterDragDrop

RevokeDragDrop