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。
繼承階層架構
需求
標頭: 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。
備註
這個方法會建立足以同時包含 pidl1 和 pidl2 的新 ITEMIDLIST。 然後,它會將 pidl1 和 pidl2 複製到新的清單。
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 定義的錯誤值。