【发布时间】:2014-12-03 10:50:28
【问题描述】:
我正在尝试实现 shell 命名空间扩展,其唯一目的是覆盖特定文件夹中的缩略图处理程序 (IExtractImage)。 我希望其他所有内容都与普通文件夹中的相同,并且我宁愿不必重新实现在 IShellFolder... 的默认实现中所做的所有事情...
那么,是否可以从这个默认实现继承?如果有,怎么做?
使用组合也是一种可接受的解决方案,但我如何才能为给定文件夹获取类的实例?
【问题讨论】:
-
您需要获取默认的实现接口指针,然后在您的接口实现中转发所有方法调用,除了您要更改行为的方法调用。 To retrieve a pointer to a namespace object's IShellFolder interface, you must...
-
为您的文件类型注册一个 IThumbnailProvider?
-
@patthoyts,不,它对我不起作用;这就是为什么我必须创建一个命名空间扩展(有关更多详细信息,请参阅this question)
-
@RomanR.,是的,这就是我所说的“组合”。但我仍在研究如何为我的文件夹获取默认
IShellFolder实现的实例。显然相关的类是“Shell File System Folder”(CLSID{F3364BA0-65B9-11CE-A9BA-00AA004AE837})。 -
你似乎是从 CLSID 开始的,而 MSDN 文章(见上面的链接)建议从
SHGetDesktopFolder或SHGetFolderLocation开始。
标签: c++ windows shell winapi shell-extensions