2012-03-15 53 views
1

從屬性的IShellFolder我很新的C++專門MS C++(適用於Windows的東西)獲取文件/文件夾使用DWORD屬性

我要顯示的文件夾圖標覆蓋。

我是一些如何成功的,因爲在網上的例子。

我想獲取和操作文件/文件夾屬性,以便我可以創建一個條件來顯示疊加圖標。

我很難理解DWORD的東西,我怎麼能從中檢索有關文件/文件夾的信息(如果有的話),我正在談論IShellIconOverlayIdentifier::IsMemberOf方法。

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

我怎麼知道它是一個文件夾還是它的可寫或不是bla bla ......(來自dwAttrib)。

它說(dwAttr在IsMemberOf文檔)是

對象的屬性

它是否真的DWORD包含一個文件/文件夾的所有屬性?

如果我必須從IShellFolder::GetAttributesOf方法得到它,那我該如何實現這一點。

我退出傾向於Java所以我希望我只需要做這個覆蓋的東西。 謝謝

回答

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可以實現同樣的效果。