Wskazówki: umieszczanie formantów na paskach narzędzi
W tym artykule opisano sposób dodawania przycisku paska narzędzi zawierającego kontrolkę systemu Windows do paska narzędzi. W MFC przycisk paska narzędzi musi być klasą pochodną CMFCToolBarButton, na przykład klasa CMFCToolBarComboBoxButton, klasa CMFCToolBarEditBoxButton, klasa CMFCDropDownToolbarButton lub klasa CMFCToolBarMenuButton.
Dodawanie kontrolek do pasków narzędzi
Aby dodać kontrolkę do paska narzędzi, wykonaj następujące kroki:
Zarezerwuj fikcyjny identyfikator zasobu dla przycisku w zasobie nadrzędnego paska narzędzi. Aby uzyskać więcej informacji na temat tworzenia przycisków przy użyciu Edytora pasków narzędzi w programie Visual Studio, zobacz artykuł Edytor pasków narzędzi.
Zarezerwuj obraz paska narzędzi (ikonę przycisku) dla przycisku we wszystkich mapach bitowych nadrzędnego paska narzędzi.
W procedurze obsługi komunikatów, która przetwarza
AFX_WM_RESETTOOLBAR
komunikat, wykonaj następujące czynności:Skonstruuj kontrolkę przycisku przy użyciu klasy pochodnej
CMFCToolbarButton
.Zastąp fikcyjny przycisk nową kontrolką za pomocą klawisza CMFCToolBar::ReplaceButton. Obiekt przycisku można skonstruować na stosie, ponieważ
ReplaceButton
kopiuje obiekt przycisku i utrzymuje kopię.
Uwaga
W przypadku włączenia dostosowywania w aplikacji może być konieczne zresetowanie paska narzędzi przy użyciu przycisku Resetuj na karcie Paski narzędzi okna dialogowego Dostosowywanie, aby wyświetlić zaktualizowaną kontrolkę w aplikacji po ponownym skompilowaniu. Stan paska narzędzi jest zapisywany w rejestrze systemu Windows, a informacje o rejestrze są ładowane i stosowane po wykonaniu ReplaceButton
metody podczas uruchamiania aplikacji.
Kontrolki paska narzędzi i dostosowywanie
Karta Polecenia okna dialogowego Dostosowywanie zawiera listę poleceń, które są dostępne w aplikacji. Domyślnie okno dialogowe Dostosowywanie przetwarza menu aplikacji i tworzy listę standardowych przycisków paska narzędzi w każdej kategorii menu. Aby zachować rozszerzoną funkcjonalność zapewnianą przez kontrolki paska narzędzi, należy zastąpić standardowy przycisk paska narzędzi kontrolką niestandardową w oknie dialogowym Dostosowywanie .
Po włączeniu dostosowywania należy utworzyć okno dialogowe Dostosowywanie w procedurze obsługi OnViewCustomize
dostosowywania przy użyciu klasy KLASA CMFCToolBarsCustomizeDialog. Przed wyświetleniem okna dialogowego Dostosowywanie wywołując polecenie CMFCToolBarsCustomizeDialog::Create, wywołaj polecenie CMFCToolBarsCustomizeDialog::ReplaceButton, aby zastąpić standardowy przycisk nową kontrolką.
Przykład: tworzenie pola kombi znajdź
W tej sekcji opisano sposób tworzenia kontrolki Pola kombi Znajdź , która jest wyświetlana na pasku narzędzi i zawiera ostatnio używane ciągi wyszukiwania. Użytkownik może wpisać ciąg w kontrolce, a następnie nacisnąć klawisz Enter, aby wyszukać dokument, lub nacisnąć klawisz ucieczki, aby przywrócić fokus do ramki głównej. W tym przykładzie przyjęto założenie, że dokument jest wyświetlany w widoku pochodnym klasy CEditView.
Tworzenie kontrolki Find
Najpierw utwórz kontrolkę Znajdź pole kombi:
Dodaj przycisk i jego polecenia do zasobów aplikacji:
W zasobach aplikacji dodaj nowy przycisk z identyfikatorem
ID_EDIT_FIND
polecenia do paska narzędzi w aplikacji i do wszystkich map bitowych skojarzonych z paskiem narzędzi.Utwórz nowy element menu z identyfikatorem
ID_EDIT_FIND
polecenia.Dodaj nowy ciąg "Znajdź tekst\nFind" do tabeli ciągów i przypisz mu
ID_EDIT_FIND_COMBO
identyfikator polecenia. Ten identyfikator będzie używany jako identyfikator polecenia przycisku Znajdź pole kombi.Uwaga
Ponieważ
ID_EDIT_FIND
jest to standardowe polecenie, które jest przetwarzane przezCEditView
program , nie jest wymagane do zaimplementowania specjalnej procedury obsługi dla tego polecenia. Należy jednak zaimplementować procedurę obsługi dla nowego poleceniaID_EDIT_FIND_COMBO
.
Utwórz nową klasę ,
CFindComboBox
pochodzącą z klasy CComboBox.CFindComboBox
W klasie przesłoń metodę wirtualnąPreTranslateMessage
. Ta metoda umożliwi pole kombi przetworzenie komunikatu WM_KEYDOWN . Jeśli użytkownik osiągnie klucz ucieczki (VK_ESCAPE
), zwróć fokus do głównego okna ramki. Jeśli użytkownik osiągnie klawisz Enter (VK_ENTER
), opublikuj w oknieWM_COMMAND
głównym ramki komunikat zawierającyID_EDIT_FIND_COMBO
identyfikator polecenia.Utwórz klasę dla przycisku Znajdź pole kombi pochodzącego z klasy CMFCToolBarComboBoxButton. W tym przykładzie nazwa
CFindComboButton
to .Konstruktor
CMFCToolbarComboBoxButton
przyjmuje trzy parametry: identyfikator polecenia przycisku, indeks obrazu przycisku i styl pola kombi. Ustaw następujące parametry:Przekaż identyfikator
ID_EDIT_FIND_COMBO
polecenia jako .Użyj polecenia CCommandManager::GetCmdImage z poleceniem
ID_EDIT_FIND
, aby pobrać indeks obrazu.Aby uzyskać listę dostępnych stylów pól kombi, zobacz Style pola kombi.
CFindComboButton
W klasie zastąpij metodęCMFCToolbarComboBoxButton::CreateCombo
. W tym miejscu należy utworzyćCFindComboButton
obiekt i zwrócić do niego wskaźnik.Użyj makra IMPLEMENT_SERIAL , aby przycisk kombi był trwały. Menedżer obszaru roboczego automatycznie ładuje i zapisuje stan przycisku w rejestrze systemu Windows.
Zaimplementuj
ID_EDIT_FIND_COMBO
program obsługi w widoku dokumentu. Użyj polecenia CMFCToolBar::GetCommandButtons z poleceniemID_EDIT_FIND_COMBO
, aby pobrać wszystkie przyciski pola kombi Znajdź . Może istnieć kilka kopii przycisku o tym samym identyfikatorze polecenia z powodu dostosowania.W procedurze obsługi
OnFind
komunikatówID_EDIT_FIND
użyj polecenia CMFCToolBar::IsLastCommandFromButton, aby określić, czy polecenie find zostało wysłane z przycisku Znajdź pole kombi. Jeśli tak, znajdź tekst i dodaj ciąg wyszukiwania do pola kombi.
Dodawanie kontrolki Znajdź do głównego paska narzędzi
Aby dodać przycisk pola kombi do paska narzędzi, wykonaj następujące kroki:
Zaimplementuj procedurę obsługi
OnToolbarReset
komunikatówAFX_WM_RESETTOOLBAR
w głównym oknie ramki.Uwaga
Platforma wysyła ten komunikat do głównego okna ramki, gdy pasek narzędzi jest inicjowany podczas uruchamiania aplikacji lub gdy pasek narzędzi jest resetowany podczas dostosowywania. W obu przypadkach należy zastąpić standardowy przycisk paska narzędzi przyciskiem niestandardowego pola kombi Znajdź .
W procedurze
AFX_WM_RESETTOOLBAR
obsługi sprawdź identyfikator paska narzędzi, czyli WPARAM komunikatu AFX_WM_RESETTOOLBAR. Jeśli identyfikator paska narzędzi jest taki sam jak identyfikator paska narzędzi, który zawiera przycisk Znajdź pole kombi, wywołaj polecenie CMFCToolBar::ReplaceButton , aby zastąpić przycisk Znajdź (czyli przycisk identyfikatoremID_EDIT_FIND)
polecenia z obiektemCFindComboButton
.Uwaga
Obiekt można skonstruować
CFindComboBox
na stosie, ponieważReplaceButton
kopiuje obiekt przycisku i utrzymuje kopię.
Dodawanie kontrolki Znajdź do okna dialogowego Dostosowywanie
W procedurze obsługi OnViewCustomize
dostosowywania wywołaj polecenie CMFCToolBarsCustomizeDialog::ReplaceButton , aby zastąpić przycisk Znajdź (czyli przycisk identyfikatorem ID_EDIT_FIND
polecenia ) obiektem CFindComboButton
.
Zobacz też
Wykres hierarchii
Klasy
Klasa CMFCToolBar
Klasa CMFCToolBarButton
Klasa CMFCToolBarComboBoxButton
Klasa CMFCToolBarsCustomizeDialog