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 |
---|---|
|
已發生未預期的錯誤。 |
|
pdwEffect 值無效。 |
|
此作業的記憶體不足。 |
備註
您不會直接呼叫 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 旗標。 這個值接著會傳遞至 DoDragDrop 的 pdwEffect 參數。 合理的值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 |