PRB: IShellFolder::GetDisplayNameOf Returns Names with GUIDs (198871)
The information in this article applies to:
- Microsoft Platform Software Development Kit (SDK) 1.0, when used with:
- the operating system: Microsoft Windows NT
- the operating system: Microsoft Windows 2000
This article was previously published under Q198871 SYMPTOMS
On Windows 2000, calling the desktop's IShellFolder::GetDisplayNameOf with SHGDN_FORPARSING for a namespace extension returns a name with GUIDs in it rather than actual display names.
For example, the following code:
LPITEMIDLIST pidl = NULL;
SHGetSpecialFolderLocation(NULL, CSIDL_CONTROLS, &pidl);
if(pidl)
{
IShellFolder *pDesktop;
SHGetDesktopFolder(&pDesktop);
if(pDesktop)
{
STRRET str;
TCHAR szText[MAX_PATH];
pDesktop->GetDisplayNameOf( pidl,
SHGDN_FORPARSING,
&str);
pDesktop->Release();
}
}
returns a name such as:
::{<GUID for My Computer>}\{<GUID for Control Panel>}
rather than the following expected text:
Some folders may return a name such as:
My Computer\::{GUID for the requested item}
instead of returning the GUID for "My Computer."
CAUSE
This behavior is due to a design change in the Windows 2000 desktop.
RESOLUTION
To retrieve the actual display text, you need to add the SHGDN_FORADDRESSBAR flag to the SHGDN_FORPARSING flag. If this is done in the sample code above, the text returned will be:
STATUS
This behavior is by design.
Modification Type: | Minor | Last Reviewed: | 7/11/2005 |
---|
Keywords: | kbNameSpace kbprb KB198871 |
---|
|