Narzędzia zdefiniowane przez użytkownika
MFC obsługuje narzędzia zdefiniowane przez użytkownika.Narzędzie zdefiniowane przez użytkownika jest poleceniem specjalnym wykonującym programu zewnętrznego, określone przez użytkownika.Proces dostosowania można użyć do zarządzania przez użytkownika narzędzia.Jednakże nie można używać tego procesu, jeśli obiekt aplikacji nie jest pochodną Klasa CWinAppEx.Aby uzyskać więcej informacji na temat dostosowywania, zobacz Dostosowywanie dla MFC.
Jeśli została włączona obsługa narzędzia zdefiniowane przez użytkownika, okno dialogowe Dostosowywanie automatycznie obejmuje Narzędzia kartę.Na poniższej ilustracji pokazano Narzędzia strony.
Karta narzędzia okna dialogowego Dostosowywanie
Włączanie użytkownika narzędzia obsługi
Aby włączyć narzędzia zdefiniowane przez użytkownika w aplikacji, należy wywołać CWinAppEx::EnableUserTools.Należy jednak najpierw zdefiniować kilka stałych w pliki zasobów aplikacji chcesz użyć jako parametrów dla tego wywołania.
W edytorze zasobów należy utworzyć fikcyjny polecenia, który używa identyfikatora odpowiednie polecenie.W poniższym przykładzie, będziemy używać ID_TOOLS_ENTRY jako identyfikatora polecenia.Ten identyfikator polecenia znaczniki lokalizacji w jednej lub więcej menu gdzie ramach wstawi narzędzia zdefiniowane przez użytkownika.
Użytkownik musi unieważnić niektóre kolejne identyfikatory w tabeli ciągów do reprezentowania narzędzia zdefiniowane przez użytkownika.Liczba ciągów, które można zarezerwować jest równa maksymalną liczbę narzędzi użytkownika definiujące użytkowników.W poniższym przykładzie, te o nazwie ID_USER_TOOL1 przez ID_USER_TOOL10.
Sugestie można zaoferować użytkownikom, aby pomóc im Wybierz katalogi i argumenty dla zewnętrznych programów, które zostanie wywołany jako narzędzia.Aby to zrobić, należy utworzyć w edytorze zasobów dwóch wyskakujących menu.W poniższym przykładzie te o nazwie IDR_MENU_ARGS i IDR_MENU_DIRS.Dla każdego polecenia w tych menu należy zdefiniować w tabeli ciąg aplikacji ciąg.Identyfikator zasobu ciągu musi być równa identyfikatora polecenia.
Można także tworzyć w klasie pochodnej od Klasa CUserTool do zastąpienia Domyślna implementacja.Aby to zrobić, należy przekazać informacje runtime klasy pochodnej jako czwarty parametr w CWinAppEx::EnableUserTools zamiast RUNTIME_CLASS (Klasa CUserTool).
Po zdefiniowaniu odpowiednie stałe wywołanie CWinAppEx::EnableUserTools umożliwiające narzędzia zdefiniowane przez użytkownika.
Poniższe wywołanie metody pokazuje, jak korzystać z 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 będzie dostępny na karcie narzędzia dostosowywania okno dialogowe.Ramy zastąpi dowolne polecenie z identyfikatorem polecenia ID_TOOLS_ENTRY w dowolnym menu z zestawem narzędzi obecnie zdefiniowaną przez użytkownika przy każdym otwarciu tego menu.Identyfikatory poleceń ID_USER_TOOL1 przez ID_USER_TOOL10 są zarezerwowane do użytku dla narzędzia zdefiniowane przez użytkownika.Klasa Klasa CUserTool obsługuje wywołania do narzędzi użytkownika.Na karcie narzędzia dostosowywania okno dialogowe zawiera przyciski po prawej stronie pola Zapis argument i katalogu menu dostęp do IDR_MENU_ARGS i IDR_MENU_DIRS., Gdy użytkownik wybierze polecenie z jednego z tych menu, ramach dołącza odpowiednim polu tekstowym ciąg, który ma identyfikator zasobu równa identyfikatora polecenia.
Tym narzędzia wstępnie zdefiniowanych
Wstępnie zdefiniować niektóre narzędzia podczas uruchamiania aplikacji, należy zastąpić CFrameWnd::LoadFrame metoda głównego okna aplikacji.W tej metody należy wykonać następujące kroki.
Aby dodać nowe narzędzia w LoadFrame
Wskaźnik do uzyskania Klasa CUserToolsManager obiektu, wywołując CWinAppEx::GetUserToolsManager.
Dla każdego narzędzia, którą chcesz utworzyć, call CUserToolsManager::CreateNewTool.Metoda ta zwraca wskaźnik do Klasa CUserTool obiektu i dodaje narzędzia nowo utworzonego użytkownika do wewnętrznej kolekcji narzędzia.Ile informacji runtime dla klasy pochodne Klasa CUserTool jako czwarty parametr CWinAppEx::EnableUserTools, CUserToolsManager::CreateNewTool będzie wystąpienia i zamiast tego zwrotu instancji tej klasy.
Dla każdego narzędzia, ustawić jego etykietę tekstową CUserTool::m_strLabel i ustawić jego polecenia przez wywołanie CUserTool::SetCommand.Domyślne wykonania Klasa CUserTool automatycznie pobiera dostępne ikony z programu, który jest określony w wywołaniu SetCommand.