CShellManager Class
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at CShellManager Class.
Implements several methods that enable you to work with pointers to identifier lists (PIDLs).
Syntax
class CShellManager : public CObject
Members
Public Constructors
Name | Description |
---|---|
CShellManager::CShellManager | Constructs a CShellManager object. |
Public Methods
Name | Description |
---|---|
CShellManager::BrowseForFolder | Displays a dialog box that enables the user to select a shell folder. |
CShellManager::ConcatenateItem | Concatenates two PIDLs. |
CShellManager::CopyItem | Creates a new PIDL and copies the supplied PIDL to it. |
CShellManager::CreateItem | Creates a new PIDL of the specified size. |
CShellManager::FreeItem | Deletes the supplied PIDL. |
CShellManager::GetItemCount | Returns the number of items in the supplied PIDL. |
CShellManager::GetItemSize | Returns the size of the supplied PIDL. |
CShellManager::GetNextItem | Returns the next item from the PIDL. |
CShellManager::GetParentItem | Retrieves the parent item of the supplied item. |
CShellManager::ItemFromPath | Retrieves the PIDL for the item identified by the supplied path. |
Remarks
The methods of the CShellManager
class all deal with PIDLs. A PIDL is a unique identifier for a shell object.
You should not create a CShellManager
object manually. It will be created automatically by the framework of your application. However, you should call CWinAppEx::InitShellManager during the initialization process of your application. To get a pointer to the shell manager for your application, call CWinAppEx::GetShellManager.
Inheritance Hierarchy
Requirements
Header: afxshellmanager.h
CShellManager::BrowseForFolder
Displays a dialog box that enables the user to select a shell folder.
BOOL BrowseForFolder(
CString& strOutFolder,
CWnd* pWndParent = NULL,
LPCTSTR lplszInitialFolder = NULL,
LPCTSTR lpszTitle = NULL,
UINT ulFlags = BIF_RETURNONLYFSDIRS,
LPINT piFolderImage = NULL);
Parameters
[out] strOutFolder
The string used by the method to store the path of the selected folder.
[in] pWndParent
A pointer to the parent window.
[in] lplszInitialFolder
A string that contains the folder that is selected by default when the dialog box is displayed.
[in] lpszTitle
The title for the dialog box.
[in] ulFlags
Flags specifying options for the dialog box. See BROWSEINFO for the detailed description.
[out] piFolderImage
A pointer to the integer value where the method writes the image index of the selected folder.
Return Value
Nonzero if the user selects a folder from the dialog box; otherwise 0.
Remarks
When you call this method, the application creates and shows a dialog box that enables the user to select a folder. The method will write the path of the folder into the strOutFolder
parameter.
Example
The following example demonstrates how to retrieve a reference to a CShellManager
object by using the CWinAppEx::GetShellManager
method and how to use the BrowseForFolder
method. This code snippet is part of the Explorer sample.
CString strPath;
// The this pointer points to the CExplorerView class which extends the CView class.
// CMFCShellListCtrl m_wndList
if (m_wndList.GetCurrentFolder (strPath) &&
theApp.GetShellManager ()->BrowseForFolder (strPath,
this, strPath, _T("Copy the selected item(s) to the folder:")))
{
MessageBox (CString (_T("The selected path is: ")) + strPath);
}
CShellManager::ConcatenateItem
Creates a new list containing two PIDLs.
LPITEMIDLIST ConcatenateItem(
LPCITEMIDLIST pidl1,
LPCITEMIDLIST pidl2);
Parameters
[in] pidl1
The first item.
[in] pidl2
The second item.
Return Value
A pointer to the new item list if the function succeeds, otherwise NULL
.
Remarks
This method creates a new ITEMIDLIST large enough to contain both pidl1
and pidl2
. It then copies pidl1
and pidl2
to the new list.
CShellManager::CopyItem
Copies an item list.
LPITEMIDLIST CopyItem(LPCITEMIDLIST pidlSource);
Parameters
[in] pidlSource
The original item list.
Return Value
A pointer to the newly created item list if successful; otherwise NULL
.
Remarks
The newly created item list has the same size as the source item list.
CShellManager::CreateItem
Creates a new PIDL.
LPITEMIDLIST CreateItem(UINT cbSize);
Parameters
[in] cbSize
The size of the item list.
Return Value
A pointer to the created item list if successful; otherwise NULL
.
CShellManager::CShellManager
Constructs a CShellManager
object.
CShellManager();
Remarks
In most cases, you do not have to create a CShellManager
directly. By default, the framework creates one for you. To get a pointer to the CShellManager
, call CWinAppEx::GetShellManager. If you do create a CShellManager
manually, you must initialize it with the method CWinAppEx::InitShellManager.
CShellManager::FreeItem
Deletes an item list.
void FreeItem(LPITEMIDLIST pidl);
Parameters
[in] pidl
An item list to delete.
CShellManager::GetItemCount
Returns the number of items in an item list.
UINT GetItemCount(LPCITEMIDLIST pidl);
Parameters
[in] pidl
A pointer to an item list.
Return Value
The number of items in the item list.
CShellManager::GetItemSize
Returns the size of an item list.
UINT GetItemSize(LPCITEMIDLIST pidl);
Parameters
[in] pidl
A pointer to an item list.
Return Value
The size of the item list.
CShellManager::GetNextItem
Retrieves the next item from a pointer to an item identifier list (PIDL).
LPITEMIDLIST GetNextItem(LPCITEMIDLIST pidl);
Parameters
[in] pidl
The list of items to iterate.
Return Value
A pointer to the next item in the list.
Remarks
If there are no more items in the list, this method returns NULL
.
CShellManager::GetParentItem
Retrieves the parent of a pointer to an item identifier list (PIDL).
int GetParentItem(
LPCITEMIDLIST lpidl,
LPITEMIDLIST& lpidlParent);
Parameters
[in] lpidl
A PIDL whose parent will be retrieved.
[out] lpidlParent
A reference to a PIDL where the method will store the result.
Return Value
The level of the parent PIDL.
Remarks
The level of a PIDL is relative to the desktop. The desktop PIDL is considered to have a level of 0.
CShellManager::ItemFromPath
Retrieves the pointer to an item identifier list (PIDL) from the item identified by a string path.
HRESULT ItemFromPath(
LPCTSTR lpszPath,
LPITEMIDLIST& pidl);
Parameters
[in] lpszPath
A string that specifies the path for the item.
[out] pidl
A reference to a PIDL. The method uses this PIDL to store the pointer to its return value.
Return Value
Returns NOERROR
if successful; an OLE-defined error value.