Share via


RegisterDragDrop 函式 (ole2.h)

將指定的視窗註冊為 OLE 拖放作業的目標視窗,並指定要用於卸除作業的 IDropTarget 實例。

語法

HRESULT RegisterDragDrop(
  [in] HWND         hwnd,
  [in] LPDROPTARGET pDropTarget
);

參數

[in] hwnd

可做為 OLE 拖放作業目標的視窗句柄。

[in] pDropTarget

物件上 IDropTarget 介面的指標,該介面是指定視窗中拖放作業的目標。 此介面可用來傳達該視窗的 OLE 拖放資訊。

傳回值

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

傳回碼 Description
DRAGDROP_E_INVALIDHWND
hwnd 參數中傳回的句柄無效。
DRAGDROP_E_ALREADYREGISTERED
指定的視窗已經註冊為置放目標。
E_OUTOFMEMORY
作業的記憶體不足。
 
注意 如果您使用 CoInitializeCoInitializeEx 而不是 OleInitialize 初始化 COM,RegisterDragDrop 一律會傳回E_OUTOFMEMORY錯誤。
 

備註

如果您的應用程式可以在 OLE 拖放作業期間接受卸除的物件,您必須呼叫 RegisterDragDrop 函式。 每當其中一個應用程式視窗可用為潛在卸除目標時,請執行此動作;也就是說,當視窗在畫面上顯示為未遮蔽時。

呼叫 RegisterDragDrop 函式的應用程式線程必須是擷取訊息,可能是藉由使用 NULLhWnd 參數呼叫 GetMessage 函式,因為 OLE 會在需要處理訊息的線程上建立視窗。 如果不符合此需求,則任何將物件拖曳到註冊為置放目標的視窗上的應用程式都會停止回應,直到目標應用程式關閉為止。

RegisterDragDrop 函式一次只會註冊一個視窗,因此您必須針對能夠接受卸除物件的每個應用程式視窗呼叫它。

當滑鼠在 OLE 拖放作業期間,在目標視窗的未遮蔽部分上傳遞時, DoDragDrop 函式會呼叫目前視窗的指定 IDropTarget::D ragOver 方法。 當卸除作業實際發生在指定的視窗中時, DoDragDrop 函式會呼叫 IDropTarget::D rop

RegisterDragDrop 函式也會呼叫 IDropTarget 指標上的 IUnknown::AddRef 方法。

規格需求

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

另請參閱

RevokeDragDrop