1

我对 C++ 非常陌生,特别是 MS C++(对于 Windows 的东西)

我想在文件夹上显示覆盖图标。

由于网上的例子很少,我对此有些成功。

我正在尝试获取和操作文件/文件夹属性,以便我可以创建一个标准来显示覆盖图标。

我很难理解 DWORD 的东西,我如何从中检索有关文件/文件夹(如果有的话)的信息,我正在谈论IShellIconOverlayIdentifier::IsMemberOf 方法。

    HRESULT IsMemberOf(
  [in]  PCWSTR pwszPath,
  DWORD dwAttrib
);

我怎么知道它是文件夹还是可写或不可写...(来自 dwAttrib)。

它说(IsMemberOf 文档中的dwAttr

对象的属性

DWORD 真的包含文件/文件夹的所有属性吗?

如果我必须从IShellFolder::GetAttributesOf方法中获取它,那么我该如何实现。

我不再倾向于 java,所以我希望我只需要做这个覆盖的东西。谢谢

4

1 回答 1

1

IShellIconOverlayIdentifier 由外壳扩展实现,您通常不直接使用此接口,外壳在其命名空间/IShellFolder 实现的深处调用它。

当你有一个 IShellFolder 接口和一个子 pidl 时,你可以这样称呼它:

SFGAOF icareabout = SFGAO_COMPRESSED|SFGAO_ENCRYPTED;
hr = pShellFolder->GetAttributesOf(1,&childpidl,&icareabout);
//Check hr
if (SFGAO_COMPRESSED&icareabout) ...

如果您只有绝对 pidl,请先调用SHBindToParent

如果您只有常规路径,请调用SHParseDisplayName ,它可以为您提供标志(记得释放 pidl) 通过使用 SHGFI_ATTRIBUTES调用SHGetFileInfo可以实现相同的目的。

于 2012-03-15T17:38:48.220 回答