Основные сведения о панелях инструментов
В этой статье описывается базовая реализация MFC, которая позволяет добавлять панель инструментов по умолчанию в приложение, выбрав параметр в мастере приложений. В книге рассматриваются такие темы:
Параметр панели инструментов мастера приложений
Чтобы получить одну панель инструментов с кнопками по умолчанию, выберите параметр панели инструментов "Стандартный" на странице с помеченными функциями пользовательского интерфейса. Это добавляет код в приложение, которое:
Создает объект панели инструментов.
Управляет панелью инструментов, включая ее возможность закрепить или с плавать.
Панель инструментов в коде
Панель инструментов — это объект CToolBar , объявленный как член данных класса приложения CMainFrame
. Другими словами, объект панели инструментов внедрен в объект окна главного кадра. Это означает, что MFC создает панель инструментов при создании окна фрейма и уничтожает панель инструментов при уничтожении окна кадра. В следующем объявлении частичного класса для приложения с несколькими интерфейсами документов (MDI) отображаются элементы данных для встроенной панели инструментов и встроенной строки состояния. В нем также показана переопределение OnCreate
функции-члена.
class CMainFrame : public CMDIFrameWnd
{
// Implementation
protected: // control bar embedded members
CStatusBar m_wndStatusBar;
CToolBar m_wndToolBar;
// Generated message map functions
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
DECLARE_MESSAGE_MAP()
Создание панели инструментов происходит в CMainFrame::OnCreate
. MFC вызывает OnCreate после создания окна для кадра, но до того, как он станет видимым. По умолчанию OnCreate
мастер приложений создает следующие задачи панели инструментов:
CToolBar
Вызывает функцию create-члена объекта, чтобы создать базовый объект CToolBarCtrl.Вызывает LoadToolBar для загрузки сведений о ресурсе панели инструментов.
Вызывает функции для включения закрепления, плавающей и инструментальной подсказки. Дополнительные сведения об этих вызовах см. в статье "Закрепление и плавающая панель инструментов".
Примечание.
Пример DOCKTOOL для MFC содержит иллюстрации старых и новых панелей инструментов MFC. Панели инструментов, которые используются, COldToolbar
требуют вызовов на шаге 2 ( LoadBitmap
а не LoadToolBar
) и SetButtons
. Для новых панелей инструментов требуются вызовы LoadToolBar
.
Вызовы с плавающей и плавающей запятой и подсказками являются необязательными. Эти строки можно удалить, OnCreate
если вы предпочитаете. Результатом является панель инструментов, которая остается фиксированной, не в состоянии плавать или перезапуковать и не отображать подсказки инструментов.
Изменение ресурса панели инструментов
Панель инструментов по умолчанию, получаемая с помощью мастера приложений, основана на RT_TOOLBAR пользовательском ресурсе, представленном в MFC версии 4.0. Этот ресурс можно изменить с помощью редактора панели инструментов. Редактор позволяет легко добавлять, удалять и изменять порядок кнопок. Он содержит графический редактор для кнопок, которые очень похожи на общий графический редактор в Visual C++. Если вы редактировали панели инструментов в предыдущих версиях Visual C++, вы найдете задачу гораздо проще.
Чтобы подключить кнопку панели инструментов к команде, присвойте кнопке идентификатор команды, например ID_MYCOMMAND
. Укажите идентификатор команды на странице свойств кнопки в редакторе панели инструментов. Затем создайте функцию обработчика для команды (дополнительные сведения см. в разделе "Сопоставление сообщений с функциями ").
Новые функции члена CToolBar работают с ресурсом RT_TOOLBAR . LoadToolBar теперь занимает место LoadBitmap , чтобы загрузить растровое изображение изображений кнопки панели инструментов и SetButtons , чтобы задать стили кнопки и подключить кнопки с растровыми изображениями.
Дополнительные сведения об использовании редактора панели инструментов см . в редакторе инструментов.
Несколько панелей инструментов
Мастер приложений предоставляет одну панель инструментов по умолчанию. Если в приложении требуется несколько панелей инструментов, вы можете моделировать код для дополнительных панелей инструментов на основе созданного мастером кода для панели инструментов по умолчанию.
Если вы хотите отобразить панель инструментов в результате команды, вам потребуется:
Создайте ресурс панели инструментов с редактором панели инструментов и загрузите его
OnCreate
с помощью функции-члена LoadToolbar .Внедрение нового объекта CToolBar в класс главного окна фрейма.
Выполните соответствующие вызовы функции для
OnCreate
док-станции или с плавающей панели инструментов, задайте его стили и т. д.