Udostępnij za pośrednictwem


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:

  1. 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.

  2. Zarezerwuj obraz paska narzędzi (ikonę przycisku) dla przycisku we wszystkich mapach bitowych nadrzędnego paska narzędzi.

  3. W procedurze obsługi komunikatów, która przetwarza AFX_WM_RESETTOOLBAR komunikat, wykonaj następujące czynności:

    1. Skonstruuj kontrolkę przycisku przy użyciu klasy pochodnej CMFCToolbarButton.

    2. 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:

  1. Dodaj przycisk i jego polecenia do zasobów aplikacji:

    1. 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.

    2. Utwórz nowy element menu z identyfikatorem ID_EDIT_FIND polecenia.

    3. 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 przez CEditViewprogram , nie jest wymagane do zaimplementowania specjalnej procedury obsługi dla tego polecenia. Należy jednak zaimplementować procedurę obsługi dla nowego polecenia ID_EDIT_FIND_COMBO.

  2. Utwórz nową klasę , CFindComboBoxpochodzącą z klasy CComboBox.

  3. 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 oknie WM_COMMAND głównym ramki komunikat zawierający ID_EDIT_FIND_COMBO identyfikator polecenia.

  4. Utwórz klasę dla przycisku Znajdź pole kombi pochodzącego z klasy CMFCToolBarComboBoxButton. W tym przykładzie nazwa CFindComboButtonto .

  5. Konstruktor CMFCToolbarComboBoxButton przyjmuje trzy parametry: identyfikator polecenia przycisku, indeks obrazu przycisku i styl pola kombi. Ustaw następujące parametry:

    1. Przekaż identyfikator ID_EDIT_FIND_COMBO polecenia jako .

    2. Użyj polecenia CCommandManager::GetCmdImage z poleceniem ID_EDIT_FIND , aby pobrać indeks obrazu.

    3. Aby uzyskać listę dostępnych stylów pól kombi, zobacz Style pola kombi.

  6. CFindComboButton W klasie zastąpij metodę CMFCToolbarComboBoxButton::CreateCombo . W tym miejscu należy utworzyć CFindComboButton obiekt i zwrócić do niego wskaźnik.

  7. 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.

  8. Zaimplementuj ID_EDIT_FIND_COMBO program obsługi w widoku dokumentu. Użyj polecenia CMFCToolBar::GetCommandButtons z poleceniem ID_EDIT_FIND_COMBO , aby pobrać wszystkie przyciski pola kombi Znajdź . Może istnieć kilka kopii przycisku o tym samym identyfikatorze polecenia z powodu dostosowania.

  9. W procedurze obsługi OnFindkomunikatów ID_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:

  1. Zaimplementuj procedurę obsługi OnToolbarReset komunikatów AFX_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ź .

  2. 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 identyfikatorem ID_EDIT_FIND) polecenia z obiektem CFindComboButton .

    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 OnViewCustomizedostosowywania wywołaj polecenie CMFCToolBarsCustomizeDialog::ReplaceButton , aby zastąpić przycisk Znajdź (czyli przycisk identyfikatorem ID_EDIT_FINDpolecenia ) obiektem CFindComboButton .

Zobacz też

Wykres hierarchii
Klasy
Klasa CMFCToolBar
Klasa CMFCToolBarButton
Klasa CMFCToolBarComboBoxButton
Klasa CMFCToolBarsCustomizeDialog