我实现了IDropTarget接口和拖放功能。 drop(来自资源管理器的文件)效果很好。
当我拖动&使用鼠标右键拖放文件,不会弹出上下文菜单。
所以我认为显示上下文菜单是我的责任,
但在IDropTarget :: Drop方法中,(grfKeyState& MK_RBUTTON)始终为0.
如何知道拖动鼠标按钮是否正确?
是否有一种特殊的方法来显示菜单并在删除后接收选择?
(我更喜欢Win32 API方式,我不使用MFC。)
答案 0 :(得分:3)
我猜(grfKeyState & MK_RBUTTON
)总是0,因为当调用Drop()
方法时,鼠标按钮已经被释放(你刚刚完成了掉落) - 所以键盘/鼠标状态自然如此标志表明它确实已被释放。
您可以(并且 ,根据文档)做的是,在您处理DropEnter()
时,提前决定您对Drop()采取的行动。我自己没试过,但我很确定应该在那里设置 MK_RBUTTON 标志。您可以在调用放置目标的DropEnter()
方法时检查该标志,保存它,然后在调用Drop()
时自己打开上下文菜单。这不是最干净的解决方案,但我不知道是否有办法让Windows为您显示上下文菜单。