如何使用Win32 API右键拖动?

时间:2011-05-27 17:50:26

标签: c++ winapi

我实现了IDropTarget接口和拖放功能。 drop(来自资源管理器的文件)效果很好。

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

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

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

如何知道拖动鼠标按钮是否正确?

是否有一种特殊的方法来显示菜单并在删除后接收选择?

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

1 个答案:

答案 0 :(得分:3)

我猜(grfKeyState & MK_RBUTTON)总是0,因为当调用Drop()方法时,鼠标按钮已经被释放(你刚刚完成了掉落) - 所以键盘/鼠标状态自然如此标志表明它确实已被释放。

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