如何使用Win32 API右键拖动

How to right button drag with Win32 API?

本文关键字:右键 拖动 API Win32 何使用      更新时间:2023-10-16

我实现了IDropTarget接口;drop(资源管理器中的文件)运行良好。

当我拖动&用鼠标右键放下一个文件,上下文菜单不会弹出。

所以我认为我有责任显示上下文菜单,

但在IDropTarget::Drop方法中,(grfKeyState&MK_RBUTTON)始终为0。

我怎么知道拖动鼠标按钮是否正确?

有没有一种特殊的方法来显示菜单并在下拉后接收选择?

(我更喜欢Win32 API方式,我不使用MFC。)

我猜(grfKeyState & MK_RBUTTON)总是0,因为当调用Drop()方法时,鼠标按钮已经释放(您刚刚放下),所以键盘/鼠标状态标志自然会指示它确实释放了。

您可以(根据文档,应该)做的是,在处理DropEnter()时,提前决定对Drop()采取的行动。我自己还没有尝试过,但我确信应该在那里设置MK_RBUTTON标志。您可以在调用放置目标的DropEnter()方法时检查该标志,保存该标志,然后在调用Drop()时自己打开上下文菜单。这不是最干净的解决方案,但我不知道是否有办法让Windows为您显示上下文菜单。