2009-07-28 173 views
2

我的一个应用程序具有Windows资源管理器,如文件列表控件。当用户右键单击文件时,我可以成功显示资源管理器上下文菜单(带有一些我自己的额外选项)。但是,如果用户右键单击列表控件本身(未选择任何项目),则无法显示“正确”的上下文菜单。我想在右侧的Windows资源管理器中显示一个,而不是在左侧的树中。右侧资源管理器上下文菜单(IID_IContextMenu?)

我试过一堆在GetUIObjectOf调用中的变体,我冲浪谷歌网等,但我还没有找到解决方案。任何帮助?

+0

这是一个非常棘手的问题。我怀疑有人会知道答案:-) – 2009-07-28 13:42:37

回答

2

调用IShellFolder :: CreateViewObject()为文件夹本身获取IContextMenu。 IShellFolder :: GetUIObjectOf()用于检索文件夹内单个项目的界面,而不是文件夹本身。这是MSDN的文档中所述:

IShellFolder::CreateViewObject Method

这种方法也用于请求 对象暴露的几个 可选接口之一,包括 IContextMenu或IExtractIcon。在此 上下文中,CreateViewObject类似地使用 到 IShellFolder :: GetUIObjectOf。但是, 您调用IShellFolder :: GetUIObjectOf 请求一个文件夹包含的 项目之一的对象。致电 IShellFolder :: CreateViewObject到 请求文件夹 本身的对象。

+0

非常感谢。奇迹般有效 :-) – 2009-07-31 13:27:56

0

发表雷米勒博的解决方案可能是要走的路,但如果你没有使用所有的壳对象或希望更加个性化的菜单,你会看在HKCR \目录\背景的列表实现IContextMenu的GUID,其余的菜单项,你必须自己添加。

相关问题