Uživatelem definované nástroje
MFC podporuje uživatelsky definované nástroje. Uživatelem definovaný nástroj je speciální příkaz, který spustí externí program určený uživatelem. Proces přizpůsobení můžete použít ke správě uživatelsky definovaných nástrojů. Tento proces však nelze použít, pokud objekt aplikace není odvozen z CWinAppEx – třída. Další informace o přizpůsobení naleznete v tématu Přizpůsobení prostředí MFC.
Pokud jste povolili podporu uživatelem definovaných nástrojů, dialogové okno přizpůsobení automaticky obsahuje kartu Nástroje . Následující obrázek znázorňuje stránku Nástroje .
Karta Nástroje dialogového okna Vlastní nastavení
Povolení podpory uživatelsky definovaných nástrojů
Chcete-li povolit uživatelem definované nástroje v aplikaci, zavolejte CWinAppEx::EnableUserTools. Nejprve však musíte definovat několik konstant v souborech prostředků aplikace, které se mají použít jako parametry pro toto volání.
V editoru prostředků vytvořte fiktivní příkaz, který používá odpovídající ID příkazu. V následujícím příkladu používáme ID_TOOLS_ENTRY
jako ID příkazu. Toto ID příkazu označuje umístění v jedné nebo více nabídkách, kde architektura vloží uživatelsky definované nástroje.
Abyste mohli znázorňovat uživatelem definované nástroje, musíte v tabulce řetězců vyhradit několik po sobě jdoucích ID. Počet řetězců, které jste si vyhradili, se rovná maximálnímu počtu uživatelských nástrojů, které mohou uživatelé definovat. V následujícím příkladu jsou pojmenovány ID_USER_TOOL1
prostřednictvím ID_USER_TOOL10
.
Uživatelům můžete nabídnout návrhy, které jim pomůžou vybrat adresáře a argumenty pro externí programy, které se budou volat jako nástroje. Uděláte to tak, že v editoru prostředků vytvoříte dvě místní nabídky. V následujícím příkladu jsou pojmenovány IDR_MENU_ARGS
a IDR_MENU_DIRS
. Pro každý příkaz v těchto nabídkách definujte řetězec v tabulce řetězců aplikace. ID prostředku řetězce musí být stejné jako ID příkazu.
Můžete také vytvořit odvozenou třídu z CUserTool Class nahradit výchozí implementaci. Chcete-li to provést, předejte informace modulu runtime pro vaši odvozenou třídu jako čtvrtý parametr V CWinAppEx::EnableUserTools místo RUNTIME_CLASS(CUserTool – třída).
Po definování odpovídajících konstant zavolejte CWinAppEx::EnableUserTools a povolte uživatelsky definované nástroje.
Následující volání metody ukazuje, jak používat tyto konstanty:
EnableUserTools(ID_TOOLS_ENTRY,
ID_USER_TOOL1,
ID_USER_TOOL10,
RUNTIME_CLASS(CUserTool),
IDR_MENU_ARGS,
IDR_MENU_DIRS);
V tomto příkladu bude karta Nástroje zahrnuta v dialogovém okně Přizpůsobení . Architektura nahradí libovolný příkaz, který odpovídá ID ID_TOOLS_ENTRY
příkazu v libovolné nabídce, sadou aktuálně definovaných uživatelských nástrojů pokaždé, když uživatel tuto nabídku otevře. ID ID_USER_TOOL1
příkazů jsou ID_USER_TOOL10
vyhrazena pro použití pro uživatelem definované nástroje. Třída CUserTool Třída zpracovává volání uživatelských nástrojů. Karta nástroje v dialogovém okně Přizpůsobení poskytuje tlačítka napravo od polí pro zadávání argumentů a adresářů pro přístup k nabídkám IDR_MENU_ARGS a IDR_MENU_DIRS. Když uživatel vybere příkaz z jedné z těchto nabídek, rozhraní připojí k příslušnému textovému poli řetězec, který má ID prostředku rovnající se ID příkazu.
Zahrnutí předdefinovaných nástrojů
Pokud chcete předdefinovat některé nástroje při spuštění aplikace, musíte přepsat CFrameWnd::LoadFrame metoda hlavního okna vaší aplikace. V této metodě musíte provést následující kroky.
Přidání nových nástrojů v loadframe
Získejte ukazatel na objekt CUserToolsManager Třídy voláníM CWinAppEx::GetUserToolsManager.
Pro každý nástroj, který chcete vytvořit, zavolejte CUserToolsManager::CreateNewTool. Tato metoda vrátí ukazatel na objekt CUserTool Class a přidá nově vytvořený uživatelský nástroj do interní kolekce nástrojů. Pokud jste zadali informace o modulu runtime pro odvozenou třídu CUserTool Class jako čtvrtý parametr CWinAppEx::EnableUserTools, CUserToolsManager::CreateNewTools vytvoří instanci a vrátí instanci této třídy.
Pro každý nástroj nastavte jeho textový popisek nastavením
CUserTool::m_strLabel
a nastavením jeho příkazu volánímCUserTool::SetCommand
. Výchozí implementace CUserTool Class automaticky načte dostupné ikony z programu, který je zadán v voláníSetCommand
.
Viz také
Přizpůsobení pro prostředí MFC
CUserTool – třída
CUserToolsManager – třída
CWinAppEx – třída