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

提供目標意見反應給使用者,並將卸除的效果傳達給 DoDragDrop 函式,讓它可以將下拉的效果傳達回來源。

語法

HRESULT DragOver(
  [in]      DWORD  grfKeyState,
  [in]      POINTL pt,
  [in, out] DWORD  *pdwEffect
);

參數

[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 值無效。
E_OUTOFMEMORY
此作業的記憶體不足。

備註

您不會直接呼叫 DragOver 。 每次使用者將滑鼠移至指定的目標視窗時, DoDragDrop 函式都會呼叫此方法。 如果取消拖放作業,則 DoDragDrop 會結束迴圈,如果使用者將滑鼠拖曳到目標視窗外,或卸除完成,則會結束迴圈。

在實作 IDropTarget::D ragOver 時,您必須提供類似 IDropTarget::D ragEnter 的功能。 您必須檢查 FORMATETC 定義數據物件的格式和媒體,以及修飾詞索引鍵的狀態,來判斷卸除目標上數據的效果。 滑鼠位置也可能扮演決定置放效果的角色。 下列修飾詞索引鍵會影響卸除的結果。

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

您會透過 pdwEffect 中的 DoDragDrop,將下拉式清單的效果傳達回來源。 DoDragDrop 函式接著會呼叫 IDropSource::GiveFeedback,讓來源應用程式可以向使用者顯示適當的視覺回饋。

IDropTarget::D ragOver 的專案上,pdwEffect 參數必須設定為傳遞給 DoDragDrop 函式之 pdwOkEffect 參數的允許效果。 IDropTarget::D ragOver 方法必須能夠選擇其中一個效果或停用卸除。

傳回時, pdwEffect 會設定為其中一個 DROPEFFECT 旗標。 這個值接著會傳遞至 DoDragDroppdwEffect 參數。 合理的值DROPEFFECT_COPY將拖曳的數據複製到目標、DROPEFFECT_LINK建立源數據的連結,或DROPEFFECT_MOVE允許將拖曳的數據從來源應用程式永久移至目標。

您也可以在目標視窗中提供適當的視覺回饋。 先前呼叫 IDropTarget::D ragOver 或從初始 IDropTarget::D ragEnter 顯示一些目標意見反應。 如果此意見反應不再適用,您應該將其移除。

基於效率考慮,數據物件不會傳入 IDropTarget::D ragOver。 傳入最近呼叫 IDropTarget::D ragEnter 的數據物件可供使用,而且可以使用。

當 IDropTarget::D ragOver 完成其作業時,DoDragDrop 函式會呼叫 IDropSource::GiveFeedback,讓來源應用程式可以向用戶顯示適當的視覺回饋。

實作者的注意事項

DoDragDrop 循環期間經常呼叫此函式,因此盡可能優化 DragOver 方法的實作是有意義的。

規格需求

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

另請參閱

DoDragDrop

IDropSource

IDropSourceNotify

IDropTarget

RegisterDragDrop

RevokeDragDrop