我实现了 IDropTarget 接口(interface)并且拖放(来自资源管理器的文件)运行良好。
当我用鼠标右键拖放文件时,上下文菜单没有弹出。
所以我认为显示上下文菜单是我的责任,
但在 IDropTarget::Drop 方法中,(grfKeyState & MK_RBUTTON) 始终为 0。
我如何知道拖动鼠标按钮是否正确?
有没有一种特殊的方法来显示菜单并在下拉后接收选择?
(我更喜欢 Win32 API 方式,我不使用 MFC。)
最佳答案
我猜 (grfKeyState & MK_RBUTTON
) 总是 0 因为当调用 Drop()
方法时,鼠标按钮已经被释放(你刚刚做了drop) - 键盘/鼠标状态标志自然会表明它确实已发布。
您可以(根据文档,应该)做的是,在您处理 DropEnter()< 时,提前决定您对 Drop() 采取的操作过程
。我自己还没有尝试过,但我很确定应该在那里设置 MK_RBUTTON 标志。您可以在调用放置目标的 DropEnter()
方法时检查该标志,保存它,然后在调用 Drop()
时自己打开上下文菜单。这不是最干净的解决方案,但我不知道是否有办法让 Windows 为您显示上下文菜单。
关于c++ - 如何使用 Win32 API 右键拖动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6155925/