Clase CShellManager

Implementa varios métodos que permiten trabajar con punteros en listas de identificadores (PIDL).

Sintaxis

class CShellManager : public CObject

Miembros

Constructores públicos

Nombre Descripción
CShellManager::CShellManager Construye un objeto CShellManager.

Métodos públicos

Nombre Descripción
CShellManager::BrowseForFolder Muestra un cuadro de diálogo que permite al usuario seleccionar una carpeta de shell.
CShellManager::ConcatenateItem Concatena dos PIDL.
CShellManager::CopyItem Crea un nuevo PIDL y copia el PIDL proporcionado en ella.
CShellManager::CreateItem Crea un nuevo PIDL del tamaño especificado.
CShellManager::FreeItem Elimina el PIDL proporcionado.
CShellManager::GetItemCount Devuelve el número de elementos del PIDL proporcionado.
CShellManager::GetItemSize Devuelve el tamaño del PIDL proporcionado.
CShellManager::GetNextItem Devuelve el siguiente elemento del PIDL.
CShellManager::GetParentItem Recupera el elemento primario del elemento proporcionado.
CShellManager::ItemFromPath Recupera el PIDL del elemento identificado por la ruta de acceso proporcionada.

Comentarios

Los métodos de la clase CShellManager tratan todos los PIDL. Un PIDL es un identificador único para un objeto de shell.

No debe crear un objeto CShellManager manualmente. El marco de la aplicación lo creará automáticamente. Sin embargo, debe llamar a CWinAppEx::InitShellManager durante el proceso de inicialización de la aplicación. Para obtener un puntero que apunte al administrador de shell para la aplicación, llame a CWinAppEx::GetShellManager.

Jerarquía de herencia

CObject

CShellManager

Requisitos

Encabezado: afxshellmanager.h

CShellManager::BrowseForFolder

Muestra un cuadro de diálogo que permite al usuario seleccionar una carpeta de shell.

BOOL BrowseForFolder(
    CString& strOutFolder,
    CWnd* pWndParent = NULL,
    LPCTSTR lplszInitialFolder = NULL,
    LPCTSTR lpszTitle = NULL,
    UINT ulFlags = BIF_RETURNONLYFSDIRS,
    LPINT piFolderImage = NULL);

Parámetros

strOutFolder
[salida] Cadena usada por el método para almacenar la ruta de acceso de la carpeta seleccionada.

pWndParent
[in] Puntero a la ventana primaria.

lplszInitialFolder
[entrada] Cadena que contiene la carpeta seleccionada de forma predeterminada cuando se muestra el cuadro de diálogo.

lpszTitle
[entrada] Título del cuadro de diálogo.

ulFlags
[entrada] Marcas que especifican opciones del cuadro de diálogo. Consulte BROWSEINFO para obtener la descripción detallada.

piFolderImage
[salida] Puntero que apunta al valor entero donde el método escribe el índice de imagen de la carpeta seleccionada.

Valor devuelto

Distinto de cero si el usuario selecciona una carpeta en el cuadro de diálogo; de lo contrario, 0.

Comentarios

Cuando se llama a este método, la aplicación crea y muestra un cuadro de diálogo que permite al usuario seleccionar una carpeta. El método escribirá la ruta de acceso de la carpeta en el parámetro strOutFolder.

Ejemplo

En el ejemplo siguiente se muestra cómo recuperar una referencia a un objeto CShellManager mediante el método CWinAppEx::GetShellManager y cómo usar el método BrowseForFolder. Este fragmento de código forma parte del ejemplo del Explorador.

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

Crea una nueva lista que contiene dos PIDL.

LPITEMIDLIST ConcatenateItem(
    LPCITEMIDLIST pidl1,
    LPCITEMIDLIST pidl2);

Parámetros

pidl1
[entrada] El primer elemento.

pidl2
[entrada] El segundo elemento.

Valor devuelto

Puntero que apunta a la nueva lista de elementos si la función se realiza correctamente; de lo contrario, NULL.

Comentarios

Este método crea un nuevo ITEMIDLIST lo suficientemente grande como para contener pidl1 y pidl2. A continuación, copia pidl1 y pidl2 en la nueva lista.

CShellManager::CopyItem

Copia una lista de elementos.

LPITEMIDLIST CopyItem(LPCITEMIDLIST pidlSource);

Parámetros

pidlSource
[entrada] Lista de elementos originales.

Valor devuelto

Puntero que apunta a la lista de elementos recién creada si se ejecuta correctamente; en caso contrario, NULL.

Comentarios

La lista de elementos recién creada tiene el mismo tamaño que la lista de elementos de origen.

CShellManager::CreateItem

Crea un nuevo PIDL.

LPITEMIDLIST CreateItem(UINT cbSize);

Parámetros

cbSize
[entrada] Tamaño de la lista de elementos.

Valor devuelto

Puntero que apunta a la lista de elementos si se ejecuta correctamente; en caso contrario, NULL.

CShellManager::CShellManager

Construye un objeto CShellManager.

CShellManager();

Comentarios

En la mayoría de los casos, no es necesario crear una clase CShellManager directamente. De forma predeterminada, el marco crea una automáticamente. Para obtener un puntero que apunte a CShellManager, llame a CWinAppEx::GetShellManager. Si crea una clase CShellManager manualmente, debe inicializarla con el método CWinAppEx::InitShellManager.

CShellManager::FreeItem

Elimina una lista de elementos.

void FreeItem(LPITEMIDLIST pidl);

Parámetros

pidl
[entrada] Lista de elementos que se va a eliminar.

CShellManager::GetItemCount

Devuelve el número de elementos de una lista de elementos.

UINT GetItemCount(LPCITEMIDLIST pidl);

Parámetros

pidl
[entrada] Puntero que apunta a una lista de elementos.

Valor devuelto

Número de elementos de la lista de elementos.

CShellManager::GetItemSize

Devuelve el tamaño de una lista de elementos.

UINT GetItemSize(LPCITEMIDLIST pidl);

Parámetros

pidl
[entrada] Puntero que apunta a una lista de elementos.

Valor devuelto

Tamaño de la lista de elementos.

CShellManager::GetNextItem

Recupera el siguiente elemento de un puntero que apunta a una lista de identificadores de elemento (PIDL).

LPITEMIDLIST GetNextItem(LPCITEMIDLIST pidl);

Parámetros

pidl
[entrada] Lista de elementos que se van a iterar.

Valor devuelto

Puntero que apunta al siguiente elemento de la lista.

Comentarios

Si no hay más elementos en la lista, este método devuelve NULL.

CShellManager::GetParentItem

Recupera el elemento primario de un puntero que apunta a una lista de identificadores de elemento (PIDL).

int GetParentItem(
    LPCITEMIDLIST lpidl,
    LPITEMIDLIST& lpidlParent);

Parámetros

lpidl
[entrada] Un PIDL cuyo elemento primario se recuperará.

lpidlParent
[entrada] Referencia a un PIDL donde el método almacenará el resultado.

Valor devuelto

Nivel del PIDL primario.

Comentarios

El nivel de un PIDL es relativo al escritorio. El PIDL de escritorio se considera que tiene un nivel de 0.

CShellManager::ItemFromPath

Recupera el puntero que apunta a una lista de identificadores de elemento (PIDL) del elemento identificado por una ruta de acceso de cadena.

HRESULT ItemFromPath(
    LPCTSTR lpszPath,
    LPITEMIDLIST& pidl);

Parámetros

lpszPath
[entrada] Cadena que especifica la ruta de acceso del elemento.

pidl
[salida] Referencia a un PIDL. El método usa este PIDL para almacenar el puntero que apunta a su valor devuelto.

Valor devuelto

Devuelve NOERROR si se realiza correctamente; un valor de error definido por OLE.

Consulte también

Gráfico de jerarquías
Clases