CUserToolsManager 類別
維護應用程式中 CUserTool Class 物件的集合 。 使用者工具是執行外部應用程式的功能表項目。 CUserToolsManager
物件可讓使用者或開發人員將新的使用者工具加入至應用程式。 它支援執行與使用者工具相關聯的命令,也會在 Windows 登錄中儲存使用者工具的相關資訊。
語法
class CUserToolsManager : public CObject
成員
公用建構函式
名稱 | 描述 |
---|---|
CUserToolsManager::CUserToolsManager | 建構 CUserToolsManager 。 |
公用方法
名稱 | 描述 |
---|---|
CUserToolsManager::CreateNewTool | 建立新的使用者工具。 |
CUserToolsManager::FindTool | 傳回與指定之命令識別碼相關聯的 物件指標 CMFCUserTool 。 |
CUserToolsManager::GetArgumentsMenuID | 傳回與 [自訂 ] 對話方塊之 [工具 ] 索引標籤上 [引數 ] 功能表相關聯的資源 識別碼。 |
CUserToolsManager::GetDefExt | 會傳回 [開啟 檔案] 對話方塊 ( CFileDialog ) 在 [自訂 ] 對話方塊之 [工具 ] 索引標籤的 [命令 ] 欄位中使用的預設副檔名 。 |
CUserToolsManager::GetFilter | 會傳回 [檔案開啟 ] 對話方塊 ( CFileDialog 類別 ) 在 [自訂 ] 對話方塊之 [工具 ] 索引標籤的 [命令 ] 欄位中所使用的檔案篩選 。 |
CUserToolsManager::GetInitialDirMenuID | 傳回與 [自訂 ] 對話方塊之 [工具 ] 索引標籤上 [初始目錄 ] 功能表相關聯的資源 識別碼。 |
CUserToolsManager::GetMaxTools | 傳回可在應用程式中配置的使用者工具數目上限。 |
CUserToolsManager::GetToolsEntryCmd | 傳回使用者工具功能表項目預留位置的命令識別碼。 |
CUserToolsManager::GetUserTools | 傳回使用者工具清單的參考。 |
CUserToolsManager::InvokeTool | 執行與具有指定命令識別碼的使用者工具相關聯的應用程式。 |
CUserToolsManager::IsUserToolCmd | 判斷命令識別碼是否與使用者工具相關聯。 |
CUserToolsManager::LoadState | 從 Windows 登錄載入使用者工具的相關資訊。 |
CUserToolsManager::MoveToolDown | 在使用者工具清單中,將指定的使用者工具向下移動。 |
CUserToolsManager::MoveToolUp | 在使用者工具清單中向上移動指定的使用者工具。 |
CUserToolsManager::RemoveTool | 從應用程式移除指定的使用者工具。 |
CUserToolsManager::SaveState | 將使用者工具的相關資訊儲存在 Windows 登錄中。 |
CUserToolsManager::SetDefExt | 指定 [檔案開啟 ] 對話方塊 ( CFileDialog 類別 ) 在 [自訂 ] 對話方塊之 [工具 ] 索引標籤的 [命令 ] 欄位中所使用的預設副檔名 。 |
CUserToolsManager::SetFilter | 指定 [檔案開啟 ] 對話方塊 ( CFileDialog 類別 ) 在 [自訂 ] 對話方塊之 [工具 ] 索引標籤的 [命令 ] 欄位中所使用的檔案篩選 。 |
備註
若要將使用者工具併入您的應用程式,您必須:
為使用者工具功能表項目保留功能表項目和相關聯的命令識別碼。
為使用者可以在應用程式中定義的每個使用者工具保留循序命令識別碼。
呼叫 CWinAppEx::EnableUserTools 方法,並提供下列參數:功能表命令識別碼、第一個使用者工具命令識別碼,以及最後一個使用者工具命令識別碼。
每個應用程式應該只有一個全域 CUserToolsManager
物件。
如需使用者工具的範例,請參閱 VisualStudioDemo 範例專案。
範例
下列範例示範如何擷取物件的參考 CUserToolsManager
,以及如何建立新的使用者工具。 此程式碼片段是 Visual Studio 示範範例 的 一部分。
CUserToolsManager* pUserToolsManager = theApp.GetUserToolsManager();
if (pUserToolsManager != NULL && pUserToolsManager->GetUserTools().IsEmpty())
{
// CUserToolsManager* pUserToolsManager
CUserTool* pTool1 = pUserToolsManager->CreateNewTool();
pTool1->m_strLabel = _T("&Notepad");
pTool1->SetCommand(_T("notepad.exe"));
CUserTool* pTool2 = pUserToolsManager->CreateNewTool();
pTool2->m_strLabel = _T("Paint &Brush");
pTool2->SetCommand(_T("mspaint.exe"));
CUserTool* pTool3 = pUserToolsManager->CreateNewTool();
pTool3->m_strLabel = _T("&Windows Explorer");
pTool3->SetCommand(_T("explorer.exe"));
CUserTool* pTool4 = pUserToolsManager->CreateNewTool();
pTool4->m_strLabel = _T("Microsoft On-&Line");
pTool4->SetCommand(_T("http://www.microsoft.com"));
}
繼承階層架構
CUserToolsManager
需求
標頭: afxusertoolsmanager.h
CUserToolsManager::CreateNewTool
建立新的使用者工具。
CUserTool* CreateNewTool();
傳回值
新建立使用者工具的指標,如果使用者工具數目超過最大值,則為 Null。 傳回的類型與傳遞至 CWinAppEx::EnableUserTools
pToolRTC 參數的類型相同。
備註
這個方法會在呼叫 CWinAppEx::EnableUserTools 中提供的範圍中尋找第一個可用的功能表命令識別碼,並指派使用者工具此識別碼。
如果工具數目達到最大值,方法就會失敗。 當範圍內的所有命令識別碼都指派給使用者工具時,就會發生這種情況。 您可以呼叫 CUserToolsManager::GetMaxTools 來擷取工具數目上限。 您可以呼叫 CUserToolsManager::GetUserTools 方法來存取工具清單。
CUserToolsManager::CUserToolsManager
建構 CUserToolsManager
。 每個應用程式最多都必須有一個使用者工具管理員。
CUserToolsManager();
CUserToolsManager(
const UINT uiCmdToolsDummy,
const UINT uiCmdFirst,
const UINT uiCmdLast,
CRuntimeClass* pToolRTC=RUNTIME_CLASS(CUserTool),
UINT uArgMenuID=0,
UINT uInitDirMenuID=0);
參數
uiCmdToolsDummy
[in]架構用來做為使用者工具功能表命令識別碼預留位置的不帶正負號整數。
uiCmdFirst
[in]第一個使用者工具命令的命令識別碼。
uiCmdLast
[in]最後一個使用者工具命令的命令識別碼。
pToolRTC
[in]CUserToolsManager::CreateNewTool 所建立的類別 。 藉由使用此類別,您可以使用 CUserTool 類別 的 衍生類型,而不是預設實作。
uArgMenuID
[in]引數快顯功能表的功能表資源識別碼。
uInitDirMenuID
[in]初始目錄快顯功能表的功能表資源識別碼。
備註
請勿呼叫此建構函式。 請改為呼叫 CWinAppEx::EnableUserTools 以啟用使用者工具,並呼叫 CWinAppEx::GetUserToolsManager 以取得 的 CUserToolsManager
指標。 如需詳細資訊,請參閱 使用者定義的工具 。
CUserToolsManager::FindTool
傳回與指定命令識別碼相關聯的 CUserTool 類別 物件的指標 。
CUserTool* FindTool(UINT uiCmdId) const;
參數
uiCmdId
[in]功能表命令識別碼。
傳回值
如果成功,則為 CUserTool 類別 或 CUserTool
衍生物件的指標,否則為 Null。
備註
成功時 FindTool
,傳回的類型與 CWinAppEx::EnableUserTools 的 pToolRTC 參數 類型相同。
CUserToolsManager::GetArgumentsMenuID
傳回與 [自訂 ] 對話方塊之 [工具 ] 索引標籤上 [引數 ] 功能表相關聯的資源 識別碼。
UINT GetArgumentsMenuID() const;
傳回值
功能表資源的識別碼。
備註
CWinAppEx::EnableUserTools 的 uArgMenuID 參數會指定資源的識別碼。
CUserToolsManager::GetDefExt
會傳回 [開啟 檔案] 對話方塊 ( CFileDialog ) 在 [自訂 ] 對話方塊之 [工具 ] 索引標籤的 [命令 ] 欄位中使用的預設副檔名 。
const CString& GetDefExt() const;
傳回值
包含延伸模組之 物件的參考 CString
。
CUserToolsManager::GetFilter
會傳回 [檔案開啟 ] 對話方塊 ( CFileDialog 類別 ) 在 [自訂 ] 對話方塊之 [工具 ] 索引標籤的 [命令 ] 欄位中所使用的檔案篩選 。
const CString& GetFilter() const;
傳回值
包含篩選之 CString
物件的參考。
CUserToolsManager::GetInitialDirMenuID
傳回與 [自訂 ] 對話方塊之 [工具 ] 索引標籤上 [初始目錄 ] 功能表相關聯的資源 識別碼。
UINT GetInitialDirMenuID() const;
傳回值
功能表資源識別碼。
備註
傳回的識別碼是在 CWinAppEx::EnableUserTools 的 uInitDirMenuID 參數中指定。
CUserToolsManager::GetMaxTools
傳回可在應用程式中配置的使用者工具數目上限。
int GetMaxTools() const;
傳回值
可配置的使用者工具數目上限。
備註
呼叫此方法,以擷取可在應用程式中配置的最大工具數目。 這個數位是從 uiCmdFirst 到 您傳遞至 CWinAppEx::EnableUserTools 的 uiCmdLast 參數範圍 中的識別碼數目。
CUserToolsManager::GetToolsEntryCmd
傳回使用者工具功能表項目預留位置的命令識別碼。
UINT GetToolsEntryCmd() const;
傳回值
預留位置的命令識別碼。
備註
若要啟用使用者工具,請呼叫 CWinAppEx::EnableUserTools 。 uiCmdToolsDummy 參數會指定工具專案命令的命令識別碼。 這個方法會傳回工具專案命令識別碼。 只要在功能表中使用該識別碼,當功能表出現時,就會由使用者工具清單取代。
CUserToolsManager::GetUserTools
傳回使用者工具清單的參考。
const CObList& GetUserTools() const;
傳回值
CObList 類別 物件的常數參考 ,其中包含使用者工具的清單。
備註
呼叫此方法以擷取 CUserToolsManager 物件所維護的使用者工具 清單。 每個使用者工具都會以 CUserTool 類別 類型的 物件或衍生自 CUserTool
的類型來表示。 當您呼叫 CWinAppEx::EnableUserTools 以啟用使用者工具時, pToolRTC 參數會指定類型。
CUserToolsManager::InvokeTool
執行與具有指定命令識別碼的使用者工具相關聯的應用程式。
BOOL InvokeTool(UINT uiCmdId);
參數
uiCmdId
[in]與使用者工具相關聯的功能表命令識別碼。
傳回值
如果已成功執行與使用者工具相關聯的命令,則為非零;否則為 0。
備註
呼叫這個方法,以執行與使用者工具相關聯的應用程式,其中包含 uiCmdId 所 指定的命令識別碼。
CUserToolsManager::IsUserToolCmd
判斷命令識別碼是否與使用者工具相關聯。
BOOL IsUserToolCmd(UINT uiCmdId) const;
參數
uiCmdId
[in]功能表項目的命令識別碼。
傳回值
如果指定的命令識別碼與使用者工具相關聯,則為非零;否則為 0。
備註
這個方法會檢查指定的命令識別碼是否在命令識別碼範圍中。 當您呼叫 CWinAppEx::EnableUserTools 以啟用使用者工具時,您可以指定範圍。
CUserToolsManager::LoadState
從 Windows 登錄載入使用者工具的相關資訊。
BOOL LoadState(LPCTSTR lpszProfileName=NULL);
參數
lpszProfileName
[in]Windows 登錄機碼的路徑。
傳回值
如果狀態已成功載入,則為非零;否則為 0。
備註
這個方法會從 Windows 登錄載入物件的狀態 CUserToolsManager
。
通常,您不會直接呼叫此方法。 CWinAppEx::LoadState 會將其呼叫為工作區初始化程式的一部分。
CUserToolsManager::MoveToolDown
在使用者工具清單中,將指定的使用者工具向下移動。
BOOL MoveToolDown(CUserTool* pTool);
參數
pTool
[in]指定要移動的使用者工具。
傳回值
如果使用者工具已成功下移,則為非零;否則為 0。
備註
如果 pTool 指定的工具 不在內部清單中,或是工具在清單中最後一個,則方法會失敗。
CUserToolsManager::MoveToolUp
在使用者工具清單中向上移動指定的使用者工具。
BOOL MoveToolUp(CUserTool* pTool);
參數
pTool
[in]指定要移動的使用者工具。
傳回值
如果使用者工具已成功上移,則為非零;否則為 0。
備註
如果 pTool 參數指定的工具 不在內部清單中,或工具是清單中的第一個工具專案,則方法會失敗。
CUserToolsManager::RemoveTool
從應用程式移除指定的使用者工具。
BOOL RemoveTool(CUserTool* pTool);
參數
pTool
[in, out]要移除之使用者工具的指標。
傳回值
如果已成功移除工具,則為 TRUE。 否則為 FALSE。
備註
如果已成功移除此工具,此方法會 刪除 pTool 。
CUserToolsManager::SaveState
將使用者工具的相關資訊儲存在 Windows 登錄中。
BOOL SaveState(LPCTSTR lpszProfileName=NULL);
參數
lpszProfileName
[in]Windows 登錄機碼的路徑。
傳回值
如果已成功儲存狀態,則為非零;否則為 0。
備註
方法會將物件的目前狀態 CUserToolsManager
儲存在 Windows 登錄中。
通常,您不需要直接呼叫此方法, CWinAppEx::SaveState 會自動將其呼叫為應用程式的工作區序列化程式的一部分。
CUserToolsManager::SetDefExt
指定 [檔案開啟 ] 對話方塊 ( CFileDialog 類別 ) 在 [自訂 ] 對話方塊之 [工具 ] 索引標籤的 [命令 ] 欄位中所使用的預設副檔名 。
void SetDefExt(const CString& strDefExt);
參數
strDefExt
[in]包含預設副檔名的文字字串。
備註
呼叫這個方法,在 [ 開啟 檔案] 對話方塊中指定預設副檔名,當使用者選取要與使用者工具關聯的應用程式時,就會顯示這個副檔名。 預設值為 「exe」。
CUserToolsManager::SetFilter
指定 [檔案開啟 ] 對話方塊 ( CFileDialog 類別 ) 在 [自訂 ] 對話方塊之 [工具 ] 索引標籤的 [命令 ] 欄位中所使用的檔案篩選 。
void SetFilter(const CString& strFilter);
參數
strFilter
[in]指定篩選準則。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應