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
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.