共用方式為


RegisterDragDrop 函式 (ole2.h)

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

語法

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

參數

[in] hwnd

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

[in] pDropTarget

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

傳回值

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

傳回碼 描述
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 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 ole2.h
連結庫 Ole32.lib
DLL Ole32.dll

另請參閱

RevokeDragDrop