Поделиться через


Пошаговое руководство. Размещение элементов управления в панели инструментов

В этом разделе описывается, как добавлять кнопки панели инструментов, которая содержит элемент управления windows forms на панели инструментов.В MFC, кнопка панели инструментов должна быть Класс CMFCToolBarButton- производным классом, например Класс CMFCToolBarComboBoxButton, Класс CMFCToolBarEditBoxButton, Класс CMFCDropDownToolbarButton или Класс CMFCToolBarMenuButton.

Добавление элементов управления в панели инструментов

Чтобы добавить элемент управления в панель инструментов, выполните следующие действия:

  1. Зарезервируйте фиктивное идентификатор ресурса для кнопки в родительском ресурсе панели инструментов.Дополнительные сведения о создании кнопки с помощью редактора панели инструментов в Visual Studio см. в разделе Редактор панелей инструментов.

  2. Зарезервируйте образ значок кнопки панели инструментов () для кнопки во всех растровых изображениях родительской панели инструментов.

  3. В обработчике сообщений, который обрабатывает сообщение AFX_WM_RESETTOOLBAR, выполните следующие действия:

    1. Создайте элемент управления " Кнопка " с помощью CMFCToolbarButton- производного класса.

    2. Замените думмичная кнопку с новым элементом управления с помощью CMFCToolBar::ReplaceButton.Можно создать объект button в стеке, поскольку ReplaceButton копирует объект button и обслуживает копию.

ПримечаниеПримечание

Если включена возможность настройки в приложении, можно сбросить панель инструментов с помощью кнопки Сброс на вкладке Панели инструментов диалогового окна Настроить чтобы увидеть обновленный элемент управления в приложении после перекомпиляции.Состояние панели инструментов сохраняется в реестре windows, и загружены и применены данные реестра после того, как метод ReplaceButton выполняется во время запуска приложения.

Элементы управления " Панель инструментов и настройка

Вкладка Команды диалогового окна Настроить содержит список команд, доступных в приложении.По умолчанию диалоговое окно Настроить обрабатывает меню приложения и строит список стандартных кнопок панели инструментов в каждой категории меню.Чтобы поддерживать расширенную функциональность, которую элементы управления предоставляют Панель инструментов, необходимо заменить стандартной кнопки панели инструментов с пользовательским элементом управления в диалоговом окне Настроить.

При включении настройку можно создать диалоговое окно Настроить в обработчике OnViewCustomize настройки с помощью класса Класс CMFCToolBarsCustomizeDialog.Прежде чем отобразить диалоговое окно Настроить путем вызова CMFCToolBarsCustomizeDialog::Create, вызовите CMFCToolBarsCustomizeDialog::ReplaceButton, чтобы заменить стандартной кнопки с новым элементом управления.

Пример: Создать поле со списком поиск

Этот раздел описывает, как создать элемент управления " поле со списком Find, который отображается на панели инструментов и содержится недавн-используемые строки поиска.Пользователь может вводить строки в элементе управления, после чего нажать входной ключ для поиска документ или нажмите клавишу escape, чтобы вернуть фокус главного фрейма.В этом примере предполагается, что документ выводится в производном Класс CEditView- представлении.

Bb983718.collapse_all(ru-ru,VS.110).gifСоздание элемента управления find

Сначала создайте элемент управления " поле со списком Find:

  1. Кнопка добавить и его команды к ресурсам приложения:

    1. В ресурсах приложения добавьте новую кнопку с идентификатором команды ID_EDIT_FIND на панели инструментов в приложении растровым изображениям и ко всем связанным с панелью инструментов.

    2. Создание нового пункта меню с идентификатором команды ID_EDIT_FIND

    3. Добавьте новую строку «Найти текст\nНайти» в таблице строк и присвойте ей идентификатор команды ID_EDIT_FIND_COMBO.Этот идентификатор используется в качестве идентификатора команды кнопок полей со списком Find.

      ПримечаниеПримечание

      Поскольку ID_EDIT_FIND стандартную команду, которая обрабатывается CEditView не требуется специальный реализуется обработчик для этой команды.Однако необходимо реализовать обработчик для новой команды ID_EDIT_FIND_COMBO.

  2. Создайте новый класс, CFindComboBox, который является производным от Класс CComboBox.

  3. В классе CFindComboBox, следует переопределить виртуальный метод PreTranslateMessage.Этот метод позволяет поле со списком для обработки сообщения WM_KEYDOWN.Если пользователь ударяет клавишу escape (VK_ESCAPE), верните фокус на окно главного фрейма.Если пользователь ударяет входной ключ (VK_ENTER), то создание главного фрейма сообщение в окно WM_COMMAND, содержащее идентификатор команды. ID_EDIT_FIND_COMBO

  4. Создайте класс для кнопок полей со списком Find, производный от Класс CMFCToolBarComboBoxButton.В этом примере он называется CFindComboButton.

  5. Конструктор CMFCToolbarComboBoxButton принимает 3 параметров. идентификатор команды кнопки индекса образа кнопки и стиля поля со списком.Эти параметры следующим образом:

    1. Передайте ID_EDIT_FIND_COMBO как идентификатор команды.

    2. Используйте CCommandManager::GetCmdImage с ID_EDIT_FIND, для которого необходимо получить индекс образа.

    3. Список доступных стилей поля со списком см. в разделе Стили поля со списком.

  6. В классе CFindComboButton переопределите методCMFCToolbarComboBoxButton::CreateCombo.Далее необходимо создать объект CFindComboButton и вернуть указатель на него.

  7. Используйте макрос IMPLEMENT_SERIAL чтобы сделать комбинированную кнопку упорним.Диспетчер областей автоматически загружает и сохраняет состояние кнопки в реестре windows.

  8. Реализуйте обработчик ID_EDIT_FIND_COMBO в представлении документа.Используйте CMFCToolBar::GetCommandButtons с ID_EDIT_FIND_COMBO для получения всех кнопок полей со списком Find.Могут существовать несколько копий кнопки с одинаковым идентификатором команды из-за настройки.

  9. В обработчике сообщений OnFind ID_EDIT_FIND, используйте CMFCToolBar::IsLastCommandFromButton определить, была ли команда отправляется поиска из кнопок полей со списком Find.Если да, то поиск текста и добавьте строку поиска в поле со списком.

Bb983718.collapse_all(ru-ru,VS.110).gifДобавление элемента управления на главной панели инструментов поиска

Чтобы добавить поле со списком на панели инструментов, выполните следующие действия:

  1. Реализуйте обработчик сообщений OnToolbarResetAFX_WM_RESETTOOLBAR в окне главного фрейма.

    ПримечаниеПримечание

    Границы отправляют данное сообщение в окно главного фрейма если панель инструментов инициализирована при запуске приложения или если панель инструментов сброшенна во время настройки.В любом случае необходимо заменить стандартной кнопки панели инструментов с пользовательской кнопкой поля со списком Find.

  2. В обработчике AFX_WM_RESETTOOLBAR просмотрите идентификатор панели инструментов, т е WPARAM сообщения AFX_WM_RESETTOOLBAR.Если идентификатор панели инструментов равно идентификатор из панели инструментов, которая содержит кнопку поля со списком Find, вызовите CMFCToolBar::ReplaceButton, чтобы заменить кнопку Find (то есть кнопка с идентификатором ID_EDIT_FIND) команды с объектом CFindComboButton.

    ПримечаниеПримечание

    Можно создать объект CFindComboBox в стеке, поскольку ReplaceButton копирует объект button и обслуживает копию.

Bb983718.collapse_all(ru-ru,VS.110).gifДобавление элемента управления в диалоговое окно настройки поиска

В обработчике OnViewCustomize настройки, вызов CMFCToolBarsCustomizeDialog::ReplaceButton, чтобы заменить кнопку Find (то есть кнопка с идентификатором ID_EDIT_FIND) команды с объектом CFindComboButton.

См. также

Ссылки

Диаграмма иерархии

Класс CMFCToolBar

Класс CMFCToolBarButton

Класс CMFCToolBarComboBoxButton

Класс CMFCToolBarsCustomizeDialog

Другие ресурсы

Классы MFC