对win32 GUI的拖放支持
Drag and Drop Support for win32 GUI
我使用win32 API创建了带有简单编辑控件和按钮的非MFC GUI。现在我需要将浏览器URL拖放到GUI应用程序的一个编辑控件中,我该怎么做?Win32 Api支持这个功能吗?
COM可以通过以下方式使用:
IDropSource接口由包含拖动数据的对象实现,称为拖动源。IDropSource接口是您实现的用于在应用程序中提供拖放操作的接口之一。它包含在拖放操作中用作数据源的任何应用程序中使用的方法。拖放操作中的数据源应用程序负责:
根据用户的选择确定要拖动的数据。根据用户的鼠标操作启动拖放操作。在拖放操作期间生成一些视觉反馈,例如设置光标和高亮显示为拖放操作选择的数据。根据用户的鼠标操作取消或完成拖放操作。对由拖放操作引起的原始数据执行任何操作,例如在拖动时删除数据。IDropSource包含用于向最终用户生成视觉反馈以及用于取消或完成拖放操作的方法。您还需要在拖放操作中调用DoDragDrop、RegisterDragDrop和RevokeDragDrop函数。
IDropTarget接口由要接受放置的对象实现,称为放置目标。IDropTarget接口是您实现的用于在应用程序中提供拖放操作的接口之一。它包含在任何应用程序中使用的方法,这些方法可以在拖放操作期间作为数据的目标。投放目标应用程序负责:
正在确定跌落对目标应用程序的影响。在发生丢弃时合并任何有效的丢弃数据。将目标反馈传达给源,使得源应用程序可以提供适当的视觉反馈,例如设置光标。实现拖动滚动。将其应用程序窗口注册和吊销为删除目标。IDropTarget接口包含处理所有这些职责的方法,除了将应用程序窗口注册和吊销为放置目标之外,您必须为此调用RegisterDragDrop和RevokeDragDrop函数。
DoDragDrop函数由OLE实现,用于启动拖放操作。一旦操作正在进行,就有助于拖动源和放置目标之间的通信。
执行OLE拖放操作。WINOLEAPI DoDragDrop(IDataObject*pDataObject,//指向数据对象的指针IDropSource*pDropSource,//指向源的指针DWORD dwOK效果,//源允许的效果DWORD*pdwEffect//指向源效果的指针);
是的,支持Win32 API的Drag-Drop功能。您应该看到MSDN RegisterDragDrop函数。
有关Drag&将Win32的功能删除到此处是一个链接用例子来解释更多http://anton.maurovic.com/posts/win32-api-approach-to-windows-drag-and-drop/
如果没有COM,你可能无法在Windows中实现拖放代码,但是AndersKarlsson有一个简单的包装器吸引那些通常喜欢简单口味的C/C++程序员Windows(Win32)API。
这里的目标是解释如何在应用程序中不需要COM的情况下做到这一点。
拖放代码示例
这里http://www.codeproject.com/Articles/485/The-Complete-Idiot-s-Guide-to-Writing-Shell-Extens
在这里http://www.codeguru.com/cpp/misc/misc/draganddrop/article.php/c349/Drag-And-Drop-between-Window-Controls.htm
- 在组合框中拖放项目
- wxWidgets 拖放文件事件处理程序初始化问题(无效static_cast)
- 拖放我的MDI被CRichEditView拦截并在CRichEditView::GetDocument中崩溃 - 如何覆
- 在特定区域拖放 | Qt
- Qt - 在QGraphicScene中拖放时如何从项目中获取文本?
- Qt 模型拖放 - 无法保存类型 QJsonValue
- 如何在 2 个应用程序之间实现拖放?
- 在拖放 QML 列表中插入/删除项目使用 cpp 模型查看
- UI具有拖放功能
- 如何使用拖放功能和点击信号函数QT创建标签
- 使用MFC在对话框上拖放文件
- QListWidget通过setItemWidget使用自定义小部件集进行拖放
- 将拖放连接到QListWidget中的函数的最佳方法
- QTextEdit-根据QCursor位置进行条件拖放
- 如果使用Qt::DecorationRole,则在拖放时崩溃
- 用代码模拟窗口拖放
- Ole 拖放故障排除
- 对win32 GUI的拖放支持
- 需要解决哪个类以支持Qt应用程序和查找器之间的拖放
- 从QAbstractItemModel子类化时支持拖放