繁体   English   中英

对 win32 GUI 的拖放支持

[英]Drag and Drop Support for win32 GUI

我使用 win32 API 创建了带有简单编辑控件和按钮的非 MFC GUI。 现在我需要将浏览器 URL 拖放到我的 GUI 应用程序的编辑控件之一中,我该怎么做? Win32 Api 是否支持此功能?

COM可以通过以下方式使用:

IDropSource interface
由包含拖动数据的对象实现,称为拖动源。 IDropSource 接口是您实现的用于在应用程序中提供拖放操作的接口之一。 它包含在拖放操作中用作数据源的任何应用程序中使用的方法。 拖放操作中的数据源应用程序负责:

根据用户的选择确定被拖动的数据。 根据用户的鼠标操作启动拖放操作。 在拖放操作期间生成一些视觉反馈,例如设置光标和突出显示为拖放操作选择的数据。 根据用户的鼠标操作取消或完成拖放操作。 对拖放操作导致的原始数据执行任何操作,例如删除拖动移动中的数据。 IDropSource 包含向最终用户生成视觉反馈以及取消或完成拖放操作的方法。 您还需要在拖放操作中调用 DoDragDrop、RegisterDragDrop 和 RevokeDragDrop 函数。

  IDropTarget 接口
由旨在接受放置的对象实现,称为放置目标。IDropTarget 接口是您实现的用于在应用程序中提供拖放操作的接口之一。 它包含在拖放操作期间可以成为数据目标的任何应用程序中使用的方法。 放置目标应用程序负责:

确定下降对目标应用程序的影响。 发生丢弃时合并任何有效的丢弃数据。 将目标反馈传达给源,以便源应用程序可以提供适当的视觉反馈,例如设置光标。 实现拖动滚动。 注册和撤销其应用程序窗口作为放置目标。 IDropTarget 接口包含处理所有这些职责的方法,除了注册和撤销应用程序窗口作为放置目标,您必须调用 RegisterDragDrop 和 RevokeDragDrop 函数。

  DoDragDrop 函数
由 OLE 实现,用于启动拖放操作。 一旦操作进行中,它会促进拖动源和放置目标之间的通信。

\n\n    执行 OLE 拖放操作。\n\n WINOLEAPI DoDragDrop(\n   IDataObject * pDataObject, //指向数据对象的指针\n   IDropSource * pDropSource, //指向源的指针\n   DWORD dwOKEffect, //源允许的效果\n   DWORD * pdwEffect //指向源上效果的指针\n );\n\n\n

是的,当然 Win32 API 支持拖放功能。 您应该会看到MSDN RegisterDragDrop 函数

对于其他来源以了解有关 Win32 拖放功能的更多信息,这里是一个链接,该链接通过示例对它进行了详细解释http://anton.maurovic.com/posts/win32-api-approach-to-windows-drag-and-降低/

也许你不能在没有一些 COM 代码的情况下在 Windows 中实现拖放,但是 Anders Karlsson 有一个简单的包装器,它会吸引通常更喜欢 Windows (Win32) API 的简单风格的 C/C++ 编码人员。

此处的目标是解释如何在不需要应用程序中的 COM 的情况下执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM