分享方式:


CShellManager 類別

實作數個可讓您使用識別項清單指標 (PIDL) 的方法。

語法

class CShellManager : public CObject

成員

公用建構函式

名稱 描述
CShellManager::CShellManager 建構 CShellManager 物件。

公用方法

名稱 描述
CShellManager::BrowseForFolder 顯示對話框,讓用戶能夠選取殼層資料夾。
CShellManager::ConcatenateItem 串連兩個 PIN。
CShellManager::CopyItem 建立新的 PIDL,並將提供的 PIDL 複製到其中。
CShellManager::CreateItem 建立指定大小的新 PIDL。
CShellManager::FreeItem 刪除提供的 PIDL。
CShellManager::GetItemCount 傳回所提供 PIDL 中的項目數。
CShellManager::GetItemSize 傳回所提供 PIDL 的大小。
CShellManager::GetNextItem 從 PIDL 傳回下一個專案。
CShellManager::GetParentItem 擷取所提供專案的父專案。
CShellManager::ItemFromPath 擷取所提供路徑所識別專案的 PIDL。

備註

類別的方法 CShellManager 都會處理 PIDL。 PIDL 是殼層物件的唯一標識符。

您不應該手動建立 CShellManager 物件。 應用程式架構會自動建立它。 不過,您應該在應用程式的初始化程式期間呼叫 CWinAppEx::InitShellManager 。 若要取得應用程式的殼層管理員指標,請呼叫 CWinAppEx::GetShellManager

繼承階層架構

CObject

CShellManager

需求

標頭: afxshellmanager.h

CShellManager::BrowseForFolder

顯示對話框,讓用戶能夠選取殼層資料夾。

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

參數

strOutFolder
[out]方法用來儲存所選取資料夾路徑的字串。

pWndParent
[in]父視窗的指標。

lplszInitialFolder
[in]字串,包含顯示對話框時預設選取的資料夾。

lpszTitle
[in]對話框的標題。

ulFlags
[in]指定對話框選項的旗標。 如需詳細描述,請參閱 BROWSEINFO

piFolderImage
[out]整數值的指標,方法會寫入所選取資料夾的影像索引。

傳回值

如果使用者從對話框選取資料夾,則為非零;否則為 0。

備註

當您呼叫此方法時,應用程式會建立並顯示對話框,讓用戶能夠選取資料夾。 方法會將資料夾 的路徑寫入 strOutFolder 參數。

範例

下列範例示範如何使用 方法擷取對象的CWinAppEx::GetShellManager參考CShellManager,以及如何使用 BrowseForFolder 方法。 此代碼段是 Explorer 範例一部分。

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

建立包含兩個 PIDL 的新清單。

LPITEMIDLIST ConcatenateItem(
    LPCITEMIDLIST pidl1,
    LPCITEMIDLIST pidl2);

參數

pidl1
[in]第一個專案。

pidl2
[in]第二個專案。

傳回值

如果函式成功,則為新專案清單的指標,否則為 NULL。

備註

這個方法會建立足以同時包含 pidl1pidl2 的新 ITEMIDLIST。 然後,它會將 pidl1pidl2 複製到新的清單。

CShellManager::CopyItem

複製項目清單。

LPITEMIDLIST CopyItem(LPCITEMIDLIST pidlSource);

參數

pidlSource
[in]原始項目清單。

傳回值

成功時,新建立之專案清單的指標;否則為 NULL。

備註

新建立的專案清單大小與來源專案清單相同。

CShellManager::CreateItem

建立新的 PIDL。

LPITEMIDLIST CreateItem(UINT cbSize);

參數

cbSize
[in]項目清單的大小。

傳回值

如果成功,則為所建立專案清單的指標;否則為 NULL。

CShellManager::CShellManager

建構 CShellManager 物件。

CShellManager();

備註

在大部分情況下,您不需要直接建立 CShellManager 。 根據預設,架構會為您建立一個。 若要取得的 CShellManager指標,請呼叫 CWinAppEx::GetShellManager。 如果您手動建立 CShellManager ,則必須使用 CWinAppEx::InitShellManager 方法初始化它。

CShellManager::FreeItem

刪除項目清單。

void FreeItem(LPITEMIDLIST pidl);

參數

pidl
[in]要刪除的項目清單。

CShellManager::GetItemCount

傳回專案清單中的項目數。

UINT GetItemCount(LPCITEMIDLIST pidl);

參數

pidl
[in]項目清單的指標。

傳回值

項目清單中的項目數目。

CShellManager::GetItemSize

傳回專案清單的大小。

UINT GetItemSize(LPCITEMIDLIST pidl);

參數

pidl
[in]項目清單的指標。

傳回值

項目清單的大小。

CShellManager::GetNextItem

從專案標識碼清單的指標擷取下一個專案(PIDL)。

LPITEMIDLIST GetNextItem(LPCITEMIDLIST pidl);

參數

pidl
[in]要反覆運算的項目清單。

傳回值

清單中下一個專案的指標。

備註

如果清單中沒有其他項目,這個方法會傳回 NULL。

CShellManager::GetParentItem

擷取項目標識碼清單 (PIDL) 指標的父代。

int GetParentItem(
    LPCITEMIDLIST lpidl,
    LPITEMIDLIST& lpidlParent);

參數

lpidl
[in]將擷取其父代的 PIDL。

lpidlParent
[out]PIDL 的參考,方法會儲存結果。

傳回值

父 PIDL 的層級。

備註

PIDL 的層級相對於桌面。 桌面 PIDL 會被視為層級為 0。

CShellManager::ItemFromPath

從字串路徑所識別的專案擷取專案標識碼清單 (PIDL) 的指標。

HRESULT ItemFromPath(
    LPCTSTR lpszPath,
    LPITEMIDLIST& pidl);

參數

lpszPath
[in]指定項目路徑的字串。

pidl
[out]PIDL 的參考。 方法會使用此 PIDL 來儲存其傳回值的指標。

傳回值

如果成功,則傳回 NOERROR;OLE 定義的錯誤值。

另請參閱

階層架構圖表
類別