捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >API档案 > 正文
7 2017.06

DoDragDrop

点击次数:1275 更新时间:2017-6-7 19:56:26  【打印此页

原文链接 -> 传送门

函数功能:

DoDragDrop 函数用于执行一个 OLE 对象的拖放操作。

注意:在调用该函数之前你必须先调用 OleInitialize 函数。


API 函数原型:

HRESULT DoDragDrop(
  _In_  LPDATAOBJECT pDataObj,
  _In_  LPDROPSOURCE pDropSource,
  _In_  DWORD        dwOKEffects,
  _Out_ LPDWORD      pdwEffect
);



参数解析:

参数

含义

pDataObj

一个指向 IDataObject 接口上的数据对象的指针,其包含被拖动的数据

pDropSource

该指针指向 IDropSource 接口的实现,它是用来拖动操作期间与源头的交流

dwOKEffects

其指向 OLE 拖放操作期间源允许的效果。最重要的是它是否允许移动。pdwEffect 和 dwOKEffect 参数从 DROPEFFECT 枚举取值。对于值的列表,请参阅 DROPEFFECT

pdwEffect

该指针的值表明 OLE 拖放操作如何影响源数据。 pdwEffect 参数仅当操作没有被取消时设置



返回值:

此函数成功时返回 S_OK,其他可能的值如下所示:

返回代码

描述

DRAGDROP_S_DROP

当 OLE 拖放操作是成功的

DRAGDROP_S_CANCEL

当 OLE 拖放操作被取消

E_UNSPEC

当发生意外错误



备注:

如果你正在开发一个应用程序,并且该应用程序支持数据源的 OLE 拖放操作,当你发现用户已经开始 OLE 拖放操作时,你必须调用 DoDragDrop 函数。

DoDragDrop 函数进入一个循环中调用 IDropSourceIDropTarget 接口中的各种方法。(为了成功地实现拖拽操作,所述应用程序作为数据源还必须实现 IDropSource ,而目标应用程序必须实现 IDropTarget。)

1. DoDragDrop 函数决定了在当前光标位置的窗口,然后检查是否该窗口是一个有效的拖放目标。

2. 如果窗口是一个有效的拖放目标,DoDragDrop 会调用 IDropTarget::DragEnter。该方法会提供效果代码指示将会发生什么如果拖放操作实际发生了。有关有效拖放效果的列表 , 请参见 DROPEFFECT 枚举。

3. DoDragDrop 函数使用效果代码调用 IDropSource:GiveFeedback,以便拖放源接口可以提供适当的视觉反馈给用户。pDropSource 指针传递给 DoDragDrop 指定适当的 IDropSource 接口。

4. DoDragDrop 函数跟踪鼠标的光标移动和键盘的改变或鼠标按钮的状态:

  • 如果用户移出了窗口, DoDragDrop 函数调用 IDropTarget::DragLeave
  • 如果鼠标进入另一个窗口, DoDragDrop 函数决定了该窗口是否是一个有效的拖放目标,并且会为该窗口调用 IDropTarget::DragEnter
  • 如果鼠标移动,但保持在同一个窗口中, DoDragDrop 函数调用 IDropTarget::DragOver


5. 如果键盘或鼠标按钮状态有变化, DoDragDrop 函数会调用 IDropSource::QueryContinueDrag,并根据返回值确定是否继续进行拖动,或丢弃数据,或者取消操作:

  • 如果返回值是 S_OK , DoDragDrop 函数首先会调用 IDropTarget::DragOver 来继续操作。该方法返回一个新的效果值并且 DoDragDrop 函数会用该值调用 IDropSource::GiveFeedback 来提供适当的视觉反馈。有关有效拖放效果的列表,请参见 DROPEFFECT 枚举。IDropTarget::DragOverIDropSource::GiveFeedback 是一对当鼠标移过拖放目标,为用户提供最新的鼠标位置的反馈
  • 如果返回值是 DRAGDROP_S_DROP , DoDragDrop 函数会调用 IDropTarget::Drop。DoDragDrop 函数返回最后的效果代码给源,这样源应用程序就能可以在源数据执行适当的操作,例如,如果操作是移动的话,就切断数据
  • 如果返回值是 DRAGDROP_S_CANCEL ,DoDragDrop 函数会调用 IDropTarget::DropLeave



需求:

Minimum supported client

Windows 2000 专业版 [仅桌面应用程序]

Minimum supported server

Windows 2000 服务器版 [仅桌面应用程序]

Header

Ole2.h

Library

Ole32.lib

DLL

Ole32.dll


 

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1275 更新时间:2017-6-7 19:56:26  【打印此页

上一条:WM_PRINTCLIENT 消息

下一条:Button Styles

关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修