使用DWORD属性从IShellFolder获取文件/文件夹属性

时间:2012-03-15 13:08:26

标签: c++ visual-studio-2010 winapi attributes dword

我是C ++的新手,特别是MS C ++(适用于Windows的东西)

我想在文件夹上显示叠加图标。

我有些成功,因为网上的例子很少。

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

我很难理解DWORD的内容,我怎么能从中检索有关文件/文件夹的信息(如果有的话),我说的是IShellIconOverlayIdentifier::IsMemberOf方法。

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

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

它说(IsMemberOf文档中的dwAttr)

  

对象的属性

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

如果我必须从IShellFolder::GetAttributesOf方法获得它,那么我如何才能实现这一目标。

我退出了对java的倾向,所以我希望我只需要做这个重叠的东西。 谢谢

1 个答案:

答案 0 :(得分:1)

IShellIconOverlayIdentifier是由shell扩展实现的,你通常不直接使用这个接口,shell在其名称空间/ 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可以实现同样的目的。