前段时间我问过how to pop up the Windows context (right-click) menu for a certain file in Delphi。但是,即使一切正常(几乎)正常,“发送到...”和“打开...”子菜单也没有任何项目,即使我在资源管理器中右键单击相同的文件名时也是如此工作还行。 (例如,'发送到...'有'桌面(创建截图)','电子邮件收件人'等。)
如何显示这些菜单?
答案 0 :(得分:4)
早在part 2,Chen就发现send-to和open-with菜单显示为空。 Part 5解决了您对这些子菜单的直接关注。答案是您需要处理菜单消息。有一个与您的菜单相关联的窗口句柄 - 您提供给TrackPopupMenuEx
的句柄(Issam's answer HND
中提到的问题)。当菜单处于活动状态时,该窗口将接收消息,并且需要将它们转发到实现菜单命令的对象。该窗口有一个窗口过程,您需要调用菜单界面的HandleMenuMsg
和HandleMenuMsg2
方法。这篇文章有一个例子。
文章系列的其他部分涵盖了当您说菜单“几乎”有效时,您无疑会提到的其他内容。 Part 3讨论了属性对话框的显示位置。 Part 7关于调用默认动词。我建议你阅读整个系列。不要害怕C ++中的所有内容;它几乎都是所有的接口方法和API函数,因此它应该毫不费力地转换为Delphi。