Microsoft Visual C++ и MFC. Программирование для Win95 и WinNT


Панель состояния


Для управления панелью состояния используется класс CStatusBar. Чтобы создать для окна панель состояния следует выполнить следующие действия.

  • Создать объект класса CStatusBar. Он будет представлять панель состояния и управлять ей
  • Вызвать метод Create класса CStatusBar, чтобы создать панель и связать ее с объектом представляющим панель состояния
  • Вызвать метод SetIndicators класса CStatusBar, чтобы связать каждый индикатор панели состояния с идентификатором текстовой строки
  • MFC AppWizard автоматически добавляет к созданному им  приложению программный код, служащий для отображения панели состояния.

    Объект m_wndStatusBar класса CStatusBar определяется как элемент класса CMainFrame. Это вполне естественно, так как панель состояния принадлежит именно окну класса CMainFrame.

    protected:

          CStatusBar  m_wndStatusBar;

    Создание панели состояния и отображение ее на экране выполняется во время обработки метода OnCreate класса CMainFrame сразу после создания панели управления.

    Методы Create и SetIndicators, создающие панель, вызываются в одной строке.

    // Создаем панель status bar

    if (!m_wndStatusBar.Create(this)

          !m_wndStatusBar.SetIndicators(indicators,

                 sizeof(indicators)/sizeof(UINT)))



    {

          // Ошибка при создании панели состояния status bar

          TRACE0("Failed to create status bar\n");

          return -1;

    }

    В качестве родительского окна панели состояния методу Create указано ключевое слово this. Таким образом, родительским окном панели состояния, также как и панели управления, является главное окно приложения, представленное объектом класса CMainFrame.

    Информация, которая должна отображаться в панели состояния, определяется идентификаторами, записанными в массиве. Каждый такой идентификатор представляет текстовую строку из таблицы ресурсов приложения.

    В нашем приложении массив indicators, описывающий панель состояния, определен в файле MainFrm.cpp непосредственно после таблицы сообщений.

    static UINT indicators[] =

    {

          ID_SEPARATOR,


          ID_INDICATOR_CAPS,

          ID_INDICATOR_NUM,

          ID_INDICATOR_SCRL,

    };

    Сразу после создания панели состояния вызывается метод SetIndicators. В первом параметре ему передается массив indicators, а во втором - количество элементов в этом массиве.

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

    После создания панели управления toolbar метод SetBarStyle класса CControlBar устанавливает различные стили этой панели. Стили определяются одной или несколькими константами CBRS_.

    Константа

    Описание

    CBRS_ALIGN_TOP

    Панель управления может закрепляться в верхней части окна

    CBRS_ALIGN_BOTTOM

    Панель управления может закрепляться в нижней части окна

    CBRS_ALIGN_LEFT

    Панель управления может закрепляться на левой стороне окна

    CBRS_ALIGN_RIGHT

    Панель управления может закрепляться на правой стороне окна

    CBRS_ALIGN_ANY

    Панель управления может закрепляться с любой стороны окна

    CBRS_FLOAT_MULTI

    Несколько панелей управления могут объединяться вместе в одном мини-окне

    CBRS_TOOLTIPS

    Когда пользователь устанавливает курсор на органы управления панели toolbar, их названия отображаются в маленькой прямоугольной рамке tool tips. Более подробно о tool tips вы можете прочитать в томе 22 серии “Библиотека системного программиста”

    CBRS_FLYBY

    Текст в панели состояния изменяется, одновременно с отображением tool tips. В противном случае текст в панели состояния меняется только когда пользователь нажмет кнопку в панели управления

    CBRS_SIZE_DYNAMIC

    Когда панель управления отображается в окне, пользователь может изменять ее размеры. При этом органы управления панели будут отображаться в нескольких строках. Этот стиль доступен только для Visual C++ версии 4.0 и выше

    По умолчанию MFC AppWizard устанавливает для панели управления стили CBRS_TOOLTIPS, CBRS_FLYBY, CBRS_SIZE_DYNAMIC. Вы можете изменить их по своему усмотрению.

    m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |

          CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

    Чтобы панель управления могла отображаться в собственном маленьком окне, не прикрепленном ни к одной стороне родительского окна, два раза вызываются метод EnableDocking - для панели управления и для главного окна приложения. Затем вызывается метод DockControlBar для главного окна приложения.

    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

    EnableDocking(CBRS_ALIGN_ANY);

    DockControlBar(&m_wndToolBar);


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