Визуальное программирование и MFC

       

Создание панели управления


Для работы с панелями управления в состав библиотеки MFC включены два класса - CToolBar и CDialogBar. Они оба наследуются от базового класса CControlBar, реализующего основные функции панели управления. Кроме того, от базового класса наследуется еще один класс - CStatusBar. Он предназначен для работы с панелью состояния и будет рассматриваться позже.

Класс CToolBar представляет панель управления, состоящую из кнопок. При желании можно в панель управления класса CToolBar помимо кнопок включить и другие органы управления, например, списки или поля редактирования, однако такая возможность требует дополнительного программирования. Если необходимо создать панель, содержащую различные органы управления, а не только кнопки, то удобнее воспользоваться классом CDialogBar. Этот класс позволяет создать панель управления на основе шаблона диалоговой панели и будет рассматриваться позже.

Кнопки панели управления могут работать как кнопки, как переключатели и как переключатели с зависимой фиксацией (радио-кнопки). Тип кнопок панели управления выбирается методами класса CToolBar, например, метод SetButtonStyle.

Чтобы создать панель управления, необходимо сначала определить объект класса CToolBar, который будет представлять данную панель. Можно создать объект и нового класса, наследованного от CToolBar, в котором новыми дополнительными методами расширяются возможности класса CToolBar.

Обычно объект CToolBar включают как элемент главного окна приложения, например как элемент класса, наследованного от класса CFrameWnd (или CMDIFrameWnd - в зависимости от интерфейса приложения), например:

class CMainFrame : public CMDIFrameWnd { protected: CToolBar m_wndToolBar; // панель управления // другие описания класса ....... };

После того, как объект класса CToolBar образован, следует вызвать для него метод Create, который создает панель управления:

BOOL Create( CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP, UINT nID = AFX_IDW_TOOLBAR );

В качестве параметров методу Create указываются различные характеристики создаваемой панели.
Только первый параметр является обязательным - в нем указывается идентификатор родительского окна для панели управления.

Необязательный параметр dwStyle определяет, как будет отображаться панель управления. Рассмотрим некоторые флаги, комбинации которых можно использовать для задания характеристик панели:

  • CBRS_BOTTOM - панель отображается в нижней части окна.


  • CBRS_FLOATING - панель отображается в отдельном окне.


  • CBRS_FLYBY - панель состояния отображает краткое описание выбранной кнопки.


  • CBRS_SIZE_DYNAMIC - размер панели можно изменять. При этом кнопки в панели могут перестраиваться в несколько рядов.


  • CBRS_SIZE_FIXED - размер панели нельзя изменять.


  • CBRS_TOOLTIPS - краткое описание кнопки отображается в окне tool tips.




  • CBRS_TOP - панель отображается в верхней части окна.


  • Через последний параметр метода Create передается идентификатор, который будет присвоен панели управления. По умолчанию используется идентификатор AFX_IDW_TOOLBAR.

    Следует заметить, что приложения, созданные MFC AppWizard, имеют меню View, содержащие строки “Toolbar” и “Status bar”. Эти строки позволяют показывать и скрывать панели управления и состояния в главном окне приложения. Для обработки сообщений о выборе строки меню “Toolbar” используется метод OnUpdateControlBarMenu класса CFrameWnd. Причем этот метод может управлять отображением панели управления, если только она имеет идентификатор AFX_IDW_TOOLBAR.

    После создания панели управления методом Create, необходимо загрузить ресурс панели управления. Для этого предназначен метод LoadToolBar. В качестве параметра этому методу следует указать или имя ресурса панели управления, либо идентификатор ресурса панели управления.

    Во время создания панели управления можно указать ее характеристики. Эти характеристики можно изменить прямо во время работы приложения с помощью метода SetBarStyle класса CControlBar. Параметр этого метода задает новые характеристики панели управления. В качестве этого параметра можно использовать комбинации флагов, некоторые из которых описаны ниже:

  • CBRS_ALIGN_TOP - панель можно отобразить в верхней части окна.


  • CBRS_ALIGN_BOTTOM - панель можно отобразить в нижней части окна.


  • CBRS_ALIGN_LEFT - панель можно отобразить в левой части окна.


  • CBRS_ALIGN_RIGHT - панель можно отобразить в правой части окна.


  • CBRS_ALIGN_ANY - панель можно отобразить в любой части окна.


  • CBRS_TOOLTIPS - краткое описание кнопки отображается в окне tool tips.


  • CBRS_FLYBY - панель состояния отображает краткое описание выбранной кнопки.


  • Для определения текущих характеристик панели управления используется метод GetBarStyle класса CControlBar.


    Содержание раздела