Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОВРЕМЕННЫЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ.docx
Скачиваний:
19
Добавлен:
01.04.2025
Размер:
797 Кб
Скачать
☆

21.19. Создание панели инструментов

Панель инструментов (ToolBar) – это элемент интерфейса пользователя, часто использующийся в современных программах. На панели инструментов обычно размещаются кнопки, используемые для выполнения каких-либо действий, или окна со списком для выбора какого-либо значения. Панель инструментов представляет собой один из видов ресурсов программы, а ее данные хранятся в файле ресурсов *.rc. Панель и кнопки, размещенные на панели, редактируются с помощью графического редактора. В SDI-приложении панель инструментов включается в класс главного окна, в диалоговом приложении – в класс диалогового окна. Для создания панели инструментов в библиотеку MFC специально включен класс СToolBar.

Рассмотрим последовательность действий для создания панели инструментов.

     Добавьте ресурс ToolBar. При этом добавленная панель инструментов откроется в окне редактора ресурсов. По умолчанию ей будет присвоен идентификатор IDR_TOOLBAR1. Если редактор ресурсов закрыт, его можно включить двойным щелчком мыши на изображении панели инструментов в окне ResourceView.

     В окне ResourceView настройте свойства панели инструментов – поменяйте идентификатор ресурсов, установите язык.

     В окне редактора панели инструментов создайте несколько кнопок. Добавление новой кнопки выполняется щелчком мыши на шаблоне кнопки (кнопка слева с изображением прямоугольника). При этом изображение кнопки помещается на панель инструментов и в окно графического редактора.

     Настройте свойства каждой кнопки. Окно свойств кнопки доступно с помощью двойного щелчка мышью на изображении кнопки в панели инструментов. Каждой кнопке следует присвоить уникальный идентификатор (ID_…). Следует напомнить, что в соответствии с хорошим стилем программирования идентификатор должен отражать назначение кнопки, например, ID_HELP или ID_SAVE. Также в окне свойств можно задать ширину и высоту кнопки, подсказку к кнопке, отображаемую в панели инструментов (Prompt).

     В графическом редакторе для каждой кнопки подготовьте рисунок.

     Добавьте в класс CMainFrame в раздел protected объект класса CToolBar (панель инструментов). Для добавления переменной используйте команду Add Member Variable. Переменную назовите m_MyToolBar. В результате выполнения этой команды среда добавит в класс CMainFrame строчку, выделенную жирным шрифтом:

class CMainFrame : public CFrameWnd

{

…

protected: //control bar embedded members

…

CToolBar m_MyToolBar;

…

};

     Создайте панель инструментов в методе OnCreate() класса главного окна CMainFrame:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

………

//Создание панели инструментов

m_MyToolBar.CreateEx(this, TBSTYLE_FLAT,

WS_CHILD | WS_VISIBLE |CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

//Загрузка ресурса панели инструментов

m_MyToolBar.LoadToolBar(IDR_TOOLBAR1);

………

return 0;

}

Приведем комментарии к идентификаторам, используемым в предыдущем фрагменте кода и определяющим стиль создаваемой панели инструментов:

TBSTYLE_FLAT

 – панель инструментов с плоскими кнопками,

WS_CHILD

 – дочернее окно,

WS_VISIBLE

 – видимое окно,

CBRS_TOP

 – панель инструментов находится в верхней части окна-рамки,

CBRS_GRIPPER

 – на панели инструментов отображается область захвата (верткальная черта слева),

CBRS_TOOLTIPS

 – панель инструментов отображает подсказки,

CBRS_FLYBY

 – строка состояния отображает информацию о кнопках панели инструментов,

CBRS_SIZE_DYNAMIC

 – размеры панели инструментов меняются динамически.

Если вы внимательно изучили текст метода CMainFrame::OnCreate(), то, видимо, заметили общее между текстом, приведенном выше для нашей пользовательской панели, и стандартным текстом для панели инструментов, создаваемой автоматически в SDI-приложении. Для ускорения работы можно не вводить эти строчки вручную, а скопировать стандартный текст и лишь немного переделать его с учетом свойств нашей панели.

     Свяжите кнопки панели инструментов с методами класса представления: вызовите MFC ClassWizard (View/ClassWizard); на странице Message Maps установите Class name – имя класса представления, Object ID – идентификатор кнопки, Message – COMMAND, добавьте функцию.