IShellFolder::GetDisplayNameOf 方法 (shobjidl_core.h)
擷取指定之檔案物件或子資料夾的顯示名稱。
語法
HRESULT GetDisplayNameOf(
[in] PCUITEMID_CHILD pidl,
[in] SHGDNF uFlags,
[out] STRRET *pName
);
參數
[in] pidl
類型: PCUITEMID_CHILD
可唯一識別相對於父資料夾之檔案物件或子資料夾的 PIDL。
[in] uFlags
類型: SHGDNF
用來要求要傳回之顯示名稱類型的旗標。 如需可能值的清單,請參閱 SHGDNF 列舉型別。
[out] pName
類型: STRRET*
當這個方法傳回時,會包含 STRRET 結構的指標,用來傳回顯示名稱。 此結構中傳回的名稱類型可以是要求的類型,但Shell資料夾可能會傳回不同的類型。
傳回值
類型: HRESULT
如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
備註
呼叫者必須負責釋放此函式所配置的資源。
一般而言, pidl 只能參考父資料夾所包含的專案。 PIDL 必須是單一層級,且只包含一個 SHITEMID 結構,後面接著終止零。 如果您想要從父資料夾擷取比上層更深的項目顯示名稱,請使用 SHBindToParent 與專案的直接父資料夾系結,然後將專案的單一層級 PIDL 傳遞至 IShellFolder::GetDisplayNameOf。
此外,如果 SHGDN_FORPARSING 旗標是在 uFlags 中設定,且 未設定SHGDN_INFOLDER 旗標, pidl 可以在命名空間階層中父資料夾下方的任何層級參照物件。 一次 ,pidl 可以是多層級 PIDL,相對於父資料夾,而且可能包含多個 SHITEMID 結構。 不過,這已不再受到支援,而且 pidl 現在應該只參考單一子專案。
從 pName 所指向的結構擷取顯示名稱最簡單的方式,就是將它傳遞至 StrRetToBuf 或 StrRetToStr。 這些函式會採用 STRRET 結構並傳回名稱。 您也可以檢查結構的 uType 成員,並從適當的成員擷取名稱。
uFlags 中指定的旗標是名稱預定用途的提示。 它們不保證 IShellFolder 會傳回要求的名稱形式。 如果無法使用該表單,可能會傳回不同的表單。 特別是,IShellFolder::P arseDisplayName 成功剖析SHGDN_FORPARSING旗標所傳回的名稱。 另外還有一些旗標組合,可能會導致 GetDisplayNameOf/ParseDisplayName 來回不傳回原始標識符清單。 此情況很例外,但您應該檢查以確定。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | shobjidl_core.h (包括 Shobjidl.h) |
Dll | Shell32.dll (4.0 版或更新版本) |