_SHGDNF列舉 (shobjidl_core.h)
定義與 IShellFolder::GetDisplayNameOf 和 IShellFolder::SetNameOf 方法搭配使用的值,以指定這些方法所使用的檔案或資料夾名稱類型。
Syntax
typedef enum _SHGDNF {
SHGDN_NORMAL = 0,
SHGDN_INFOLDER = 0x1,
SHGDN_FOREDITING = 0x1000,
SHGDN_FORADDRESSBAR = 0x4000,
SHGDN_FORPARSING = 0x8000
} ;
常數
SHGDN_NORMAL 值: 0 未與另一個旗標結合時,傳回可識別專案的父相對名稱,適合向用戶顯示。 此名稱通常不包含額外的資訊,例如擴展名,而且不需要是唯一的。 此名稱可能包含可識別包含專案之資料夾的資訊。 例如,此旗標可能會導致特定使用者資料夾的 IShellFolder::GetDisplayNameOf 傳回字串 “username (on Machine) ”。 |
SHGDN_INFOLDER 值: 0x1 名稱相對於提出要求的資料夾。 這是在資料夾內容中使用時向用戶顯示的名稱。 例如,它會用於檢視和資料夾的網址列路徑區段中。 此名稱不應包含明確的資訊,例如「用戶名稱」,而不是特定用戶資料夾的「電腦) 的使用者名稱 (」。 將此旗標與 SHGDN_FORPARSING 和 SHGDN_FOREDITING搭配使用。 |
SHGDN_FOREDITING 值: 0x1000 當使用者重新命名專案時,名稱會用於就地編輯。 |
SHGDN_FORADDRESSBAR 值: 0x4000 名稱會顯示在網址列下拉式方塊中。 |
SHGDN_FORPARSING 值: 0x8000 名稱用於剖析。 也就是說,它可以傳遞至 IShellFolder::P arseDisplayName 來復原物件的 PIDL。 這個名稱的格式取決於特定物件。 單獨使用SHGDN_FORPARSING時,名稱會相對於桌面。 與SHGDN_INFOLDER結合時,名稱會相對於提出要求的資料夾。 |
備註
SHGDNF 類型定義於 Shobjidl.h 中,如下所示。
typedef DWORD SHGDNF;
這個列舉是由兩組值所組成。 第一個群組SHGDN_NORMAL和SHGDN_INFOLDER指定名稱的類型。 第二個群組SHGDN_FOREDITING、SHGDN_FORADDRESSBAR和SHGDN_FORPARSING,是由指定名稱擷取選項的第一個群組修飾詞所組成。
如果已設定SHGDN_FORPARSING且未設定 SHGDN_INFOLDER,IShellFolder::GetDisplayNameOf 可以接受包含超過 SHITEMID 結構的 PIDL。 否則,只能傳遞單一層級 PIDL。
注意 雖然檔案系統物件所傳回的剖析名稱是物件的完整路徑,但虛擬資料夾可能會使用完全不同的名稱。 例如,某些虛擬資料夾使用 GUID 做為剖析名稱,並傳回格式為 “::{GUID}” 的字串。 若要檢查物件是否為文件系統的一部分,請呼叫 IShellFolder::GetAttributesOf ,並查看是否已設定 SFGAO_FILESYSTEM 旗標。 建議實作 IShellFolder::GetDisplayNameOf 的開發人員傳回盡可能接近顯示名稱的剖析名稱,因為使用者通常需要輸入或編輯這些名稱。
SHGDN_NORMAL的數值為零,因此您無法測試此位是否存在。 請考慮SHGDN_NORMAL如果未設定該群組中的其他旗標,則會使用的預設設定。
範例
下表說明五個不同旗標選項和三種不同項目類型的可能傳回值範例。
這些是旗標選項。
數字 | Flags | 描述 |
---|---|---|
1 | SHGDN_FORPARSING | 傳回完整剖析名稱。 |
2 | SHGDN_INFOLDER |SHGDN_FORPARSING | 傳回相對於父資料夾的剖析名稱。 |
3 | SHGDN_INFOLDER |SHGDN_FOREDITING | 傳回相對於父資料夾的編輯名稱。 |
4 | SHGDN_INFOLDER | 傳回相對於父資料夾的顯示名稱。 |
5 | SHGDN_NORMAL | 傳回相對於桌面而非特定資料夾的顯示名稱。 |
這些是範例項目類型。
Letter | 描述 |
---|---|
A | 本機電腦上的 C: 磁碟驅動器,其磁碟區標籤C_DRIVE。 |
B | 在名為Mailroom的電腦上名為 Laser 的印表機。 |
C | 當擴展名隱藏) 時,檔案 C:\Directory\File.txt (。 |
下表描述傳回的顯示名稱。
A | B | C | |
---|---|---|---|
1 | C:\ | \\Mailroom\Laser | C:\Directory\File.txt |
2 | C:\ | 鐳射 | File.txt |
3 | C_DRIVE | 鐳射 | 檔案 |
4 | C_DRIVE (C:) | 鐳射 | 檔案 |
5 | C_DRIVE (C:) | 在郵件室上雷射 | 檔案 |
範例的備註
- A3:C: 磁碟驅動器會呈現其磁碟區名稱以供編輯,而不是整個字串 “C_DRIVE (C:) ”。
- B1-B5:遠端印表機的顯示名稱會根據是否相對於其父代顯示而變更。 相對於其父代顯示時,它只需要其印表機名稱,但在父代之外顯示時,它會顯示其印表機名稱和其電腦名稱。
- C3:File.txt 只呈現其基底名稱以供編輯,而不是其完整名稱。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP、Windows 7 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
標頭 | shobjidl_core.h (包括 Shobjidl.h) |