我正在尝试创建Windows应用程序。在我的应用程序中,当从Windows资源管理器拖动项目文件到FormOne,然后FormOne将调用FormSecond显示和删除FormSecond上的项目。我的问题是:我为FormSecond编写了代码来处理收到的文件。但是在FormOne上,我不知道如何在FormOne上捕获拖动事件鼠标以显示FormSecond。大家帮帮我吧!!!对不起,我的英语不好!
jexiocij1#
当用户将文件从Windows资源管理器拖到TForm上时,有两种不同的方法来处理拖放:
TForm
CreateWnd()
DragAcceptFiles()
CreateParams()
WS_EX_ACCEPTFILES
然后让Form捕获WM_DROPFILES窗口消息。消息的wParam值是一个HDROP句柄,您可以将其传递给DragQueryFile()、DragQueryPoint()和DragFinish() API。
WM_DROPFILES
wParam
HDROP
DragQueryFile()
DragQueryPoint()
DragFinish()
IDropTarget
Drag(Enter|Over|Leave)()
Drop()
IDataObject
RegisterDragDrop()
1条答案
按热度按时间jexiocij1#
当用户将文件从Windows资源管理器拖到
TForm
上时,有两种不同的方法来处理拖放:CreateWnd()
方法以调用DragAcceptFiles()
,或者:CreateParams()
方法以启用WS_EX_ACCEPTFILES
窗口样式。然后让Form捕获
WM_DROPFILES
窗口消息。消息的wParam
值是一个HDROP
句柄,您可以将其传递给DragQueryFile()
、DragQueryPoint()
和DragFinish()
API。IDropTarget
接口的类,实现各种Drag(Enter|Over|Leave)()
和Drop()
方法,从提供的IDataObject
查询文件信息。然后让Form将该类的一个示例传递给RegisterDragDrop()
。请参阅Transferring Shell Objects with Drag-and-Drop and the Clipboard了解更多详细信息。