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 所指向的結構擷取顯示名稱最簡單的方式,就是將它傳遞至 StrRetToBufStrRetToStr。 這些函式會採用 STRRET 結構並傳回名稱。 您也可以檢查結構的 uType 成員,並從適當的成員擷取名稱。

uFlags 中指定的旗標是名稱預定用途的提示。 它們不保證 IShellFolder 會傳回要求的名稱形式。 如果無法使用該表單,可能會傳回不同的表單。 特別是,IShellFolder::P arseDisplayName 成功剖析SHGDN_FORPARSING旗標所傳回的名稱。 另外還有一些旗標組合,可能會導致 GetDisplayNameOf/ParseDisplayName 來回不傳回原始標識符清單。 此情況很例外,但您應該檢查以確定。

注意uFlags 具有SHGDN_FORPARSING旗標集時所傳回的剖析名稱不一定是一般文字字串。 「我的計算機」之類的虛擬資料夾可能會傳回字串,其中包含資料夾物件的 GUID 格式為 “::{GUID}”。 建議實作 IShellFolder::GetDisplayNameOf 的 開發人員傳回盡可能接近顯示名稱的剖析名稱,因為終端使用者通常需要輸入或編輯這些名稱。
 

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 shobjidl_core.h (包括 Shobjidl.h)
Dll Shell32.dll (4.0 版或更新版本)

另請參閱

IShellFolder

IShellFolder2