马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
注:本文档由 TOP_LK 翻译,小甲鱼校对。
原文链接 -> 传送门
函数功能:
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 函数进入一个循环中调用 IDropSource 和 IDropTarget 接口中的各种方法。(为了成功地实现拖拽操作,所述应用程序作为数据源还必须实现 IDropSource ,而目标应用程序必须实现 IDropTarget。)
1. DoDragDrop 函数决定了在当前光标位置的窗口,然后检查是否该窗口是一个有效的拖放目标。
2. 如果窗口是一个有效的拖放目标,DoDragDrop 会调用 IDropTarget::DragEnter。该方法会提供效果代码指示将会发生什么如果拖放操作实际发生了。有关有效拖放效果的列表 , 请参见 DROPEFFECT 枚举。
3. DoDragDrop 函数使用效果代码调用 IDropSource:GiveFeedback,以便拖放源接口可以提供适当的视觉反馈给用户。pDropSource 指针传递给 DoDragDrop 指定适当的 IDropSource 接口。
4. DoDragDrop 函数跟踪鼠标的光标移动和键盘的改变或鼠标按钮的状态:
5. 如果键盘或鼠标按钮状态有变化, DoDragDrop 函数会调用 IDropSource::QueryContinueDrag,并根据返回值确定是否继续进行拖动,或丢弃数据,或者取消操作:
需求:
Minimum supported client | Windows 2000 专业版 [仅桌面应用程序] | Minimum supported server | Windows 2000 服务器版 [仅桌面应用程序] | Header | Ole2.h | Library | Ole32.lib | DLL | Ole32.dll |
【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。
|