Narzędzia zdefiniowane przez użytkownika

MFC obsługuje narzędzia zdefiniowane przez użytkownika. Narzędzie zdefiniowane przez użytkownika to specjalne polecenie, które wykonuje zewnętrzny, określony przez użytkownika program. Proces dostosowywania umożliwia zarządzanie narzędziami zdefiniowanymi przez użytkownika. Nie można jednak użyć tego procesu, jeśli obiekt aplikacji nie pochodzi z klasy CWinAppEx. Aby uzyskać więcej informacji na temat dostosowywania, zobacz Dostosowywanie dla MFC.

Jeśli włączono obsługę narzędzi zdefiniowanych przez użytkownika, okno dialogowe dostosowywania automatycznie zawiera kartę Narzędzia . Na poniższej ilustracji przedstawiono stronę Narzędzia .

Tools tab in the Customize dialog box.
Karta Narzędzia do dostosowywania

Włączanie obsługi narzędzi zdefiniowanych przez użytkownika

Aby włączyć narzędzia zdefiniowane przez użytkownika w aplikacji, wywołaj metodę CWinAppEx::EnableUserTools. Należy jednak najpierw zdefiniować kilka stałych w plikach zasobów aplikacji, które będą używane jako parametry dla tego wywołania.

W edytorze zasobów utwórz fikcyjne polecenie, które używa odpowiedniego identyfikatora polecenia. W poniższym przykładzie używamy ID_TOOLS_ENTRY go jako identyfikatora polecenia. Ten identyfikator polecenia oznacza lokalizację w co najmniej jednym menu, w którym platforma wstawi narzędzia zdefiniowane przez użytkownika.

Aby reprezentować narzędzia zdefiniowane przez użytkownika, należy odłożyć kilka kolejnych identyfikatorów w tabeli ciągów. Liczba ciągów, które odłożysz, jest równa maksymalnej liczbie narzędzi użytkownika, które użytkownicy mogą zdefiniować. W poniższym przykładzie są one nazwane ID_USER_TOOL1 za pomocą ID_USER_TOOL10metody .

Możesz zaoferować użytkownikom sugestie, aby ułatwić im wybieranie katalogów i argumentów dla programów zewnętrznych, które będą wywoływane jako narzędzia. W tym celu utwórz dwa menu podręczne w edytorze zasobów. W poniższym przykładzie są one nazwane IDR_MENU_ARGS i IDR_MENU_DIRS. Dla każdego polecenia w tych menu zdefiniuj ciąg w tabeli ciągów aplikacji. Identyfikator zasobu ciągu musi być równy identyfikatorowi polecenia.

Możesz również utworzyć klasę pochodną z klasy CUserTool, aby zastąpić domyślną implementację. W tym celu przekaż informacje o środowisku uruchomieniowym dla klasy pochodnej jako czwarty parametr w CWinAppEx::EnableUserTools, zamiast RUNTIME_CLASS(klasa CUserTool).

Po zdefiniowaniu odpowiednich stałych wywołaj metodę CWinAppEx::EnableUserTools , aby włączyć narzędzia zdefiniowane przez użytkownika.

Następujące wywołanie metody pokazuje, jak używać tych stałych:

EnableUserTools(ID_TOOLS_ENTRY,
                ID_USER_TOOL1,
                ID_USER_TOOL10,
                RUNTIME_CLASS(CUserTool),
                IDR_MENU_ARGS,
                IDR_MENU_DIRS);

W tym przykładzie karta narzędzia zostanie uwzględniona w oknie dialogowym Dostosowywanie . Struktura zastąpi wszystkie polecenia zgodne z identyfikatorem ID_TOOLS_ENTRY polecenia w dowolnym menu z zestawem aktualnie zdefiniowanych narzędzi użytkownika za każdym razem, gdy użytkownik otworzy to menu. Identyfikatory ID_USER_TOOL1 poleceń są ID_USER_TOOL10 zarezerwowane do użycia w narzędziach zdefiniowanych przez użytkownika. Klasa CUserTool klasy obsługuje wywołania narzędzi użytkownika. Karta narzędzia okna dialogowego Dostosowywanie zawiera przyciski po prawej stronie pól wprowadzania argumentów i katalogów w celu uzyskania dostępu do menu IDR_MENU_ARGS i IDR_MENU_DIRS. Gdy użytkownik wybierze polecenie z jednego z tych menu, platforma dołącza do odpowiedniego pola tekstowego ciąg o identyfikatorze zasobu równym identyfikatorowi polecenia.

Dołączanie wstępnie zdefiniowanych narzędzi

Jeśli chcesz wstępnie zdefiniować niektóre narzędzia podczas uruchamiania aplikacji, musisz zastąpić metodę CFrameWnd::LoadFrame okna głównego aplikacji. W tej metodzie należy wykonać następujące kroki.

Aby dodać nowe narzędzia w elemercie LoadFrame
  1. Uzyskaj wskaźnik do obiektu klasy CUserToolsManager, wywołując polecenie CWinAppEx::GetUserToolsManager.

  2. Dla każdego narzędzia, które chcesz utworzyć, wywołaj metodę CUserToolsManager::CreateNewTool. Ta metoda zwraca wskaźnik do obiektu klasy CUserTool i dodaje nowo utworzone narzędzie użytkownika do wewnętrznej kolekcji narzędzi. Jeśli podano informacje o środowisku uruchomieniowym dla klasy pochodnej klasy CUserTool jako czwarty parametr CWinAppEx::EnableUserTools, CUserToolsManager::CreateNewTool utworzy wystąpienie i zwróci wystąpienie tej klasy.

  3. Dla każdego narzędzia ustaw etykietę tekstową, ustawiając CUserTool::m_strLabel i ustawiając polecenie, wywołując polecenie CUserTool::SetCommand. Domyślna implementacja klasy CUserTool automatycznie pobiera dostępne ikony z programu określonego w wywołaniu metody SetCommand.

Zobacz też

Dostosowywanie na potrzeby MFC
Klasa CUserTool
Klasa CUserToolsManager
Klasa CWinAppEx