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


Обновление текса на панели строки состояния

В этой статье описывается, как изменить текст, отображаемый в области строки состояния MFC. Строка состояния — объект класса окна CStatusBar — содержит несколько областей «.» Каждая область прямоугольная область строки состояния, которую можно использовать для отображения информации. Например, многие приложения указывает состояние клавиш CAPS LOCK, NUM LOCK и других ключей в крайней правой области. Приложения также часто отображают информационный текст в самой левой области иногда вызываемой области (0), «область» сообщения. Например, строка состояния MFC использует область по умолчанию сообщения для отображения строки рассмотреть выбранные пункт меню или кнопки панели инструментов. На рисунке показан Строки состояния в строке состояния из созданного мастером применением приложения MFC.

По умолчанию MFC не включает в себя область CStatusBar при создании области. Чтобы активировать рабочей области необходимо использовать макрос ON_UPDATE_COMMAND_UI для каждой области в строке состояния и обновление области. Поскольку области не отправляют сообщения WM_COMMAND (нет, как кнопки панели инструментов), необходимо указать код вручную.

Например, предположим, что одна рабочая область содержит ID_INDICATOR_PAGE в качестве идентификатор команды и она содержит количество страниц в документе. В следующей процедуре описывается создание новой области в строке состояния.

Создать новую область

  1. Укажите идентификатор команды области

    В меню Вид выберите пункт Ресурсы. Щелкните правой кнопкой мыши ресурс проекта и щелкните Символы ресурсов. В диалоговом окне символов ресурсов, щелкните New. Введите имя идентификатор команды. например, ID_INDICATOR_PAGE. Укажите значение для идентификатора, или сделать значение предложенного диалоговым окном символов ресурсов. Например, для ID_INDICATOR_PAGE примите значения по умолчанию. Закройте диалоговое окно символов ресурсов.

  2. Укажите строки по умолчанию для отображения в области.

    С представлением ресурсов открытым, дважды щелкните Таблица строк в этом окне перечислены типы ресурсов для приложения. Редактор Таблица строк открыто, выберите Создать строку в меню Вставить . В окне свойств строковых выделите идентификатор команды рабочей области (например, ID_INDICATOR_PAGE) и введите строковое значение по умолчанию, например «страницы». Закройте редактор строк. (Требуется строка по умолчанию этой ошибки компилятора).

  3. Добавление области в массив indicators.

    В файле MAINFRM.CPP найдите массив indicators. Идентификатор данной команды списков массива для всех индикаторов строки состояния в порядке слева направо. На соответствующей точке в массиве введите идентификатор команды рабочей области, как показано ниже для ID_INDICATOR_PAGE:

    static UINT indicators[] =
    {
       ID_SEPARATOR,           // status line indicator
       ID_INDICATOR_CAPS,
       ID_INDICATOR_NUM,
       ID_INDICATOR_SCRL,
       ID_INDICATOR_PAGE,
    };
    

Рекомендуемый способ отображения текста в области вызов функции-члена класса SetTextCCmdUI в функции обработчика обновления для области. Например, может потребоваться настроить переменную целого числа m_nPage, которая содержит количество страниц и использовать SetText, чтобы задать текст в области, номера версии строки.

Примечание

Подход к SetText рекомендуется.Можно выполнить эту задачу на несколько более низком уровне, вызвав функцию-член SetPaneTextCStatusBar.Даже, можно по-прежнему использовать обработчик обновления.Без этого обработчика для области, MFC автоматически отключает область, стирая его содержимое.

В следующей процедуре показано, как использовать функцию обработчика обновления для отображения текста в рабочей области.

Для отображения текста области

  1. Добавьте обработчик команды обновления для команды.

    Вручную добавьте прототип для обработчика, как показано ниже для ID_INDICATOR_PAGE (в MAINFRM.H).

    afx_msg void OnUpdatePage(CCmdUI *pCmdUI);
    
  2. В соответствующий cpp-файле, добавьте определение обработчика, как показано ниже для ID_INDICATOR_PAGE (в MAINFRM.CPP).

    void CMainFrame::OnUpdatePage(CCmdUI *pCmdUI)
    {
        pCmdUI->Enable(); 
        CString strPage;
        strPage.Format(_T("Page %d"), m_nPage); 
        pCmdUI->SetText(strPage); 
    }
    

    Последние 3 линии этого обработчика код, который отображает этот текст.

  3. В соответствующей схеме сообщений добавьте макрос ON_UPDATE_COMMAND_UI, как показано ниже для ID_INDICATOR_PAGE (в MAINFRM.CPP).

    ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
    

После того как указано значение переменной m_nPage (класс CMainFrame), причины этого метода число страниц, отображаемых в области во время бездействия обработки таким же образом, что обновления приложения другие индикаторы. Если m_nPage изменяется, то отображаются изменяется во время следующего пустых циклов.

Дополнительные сведения

См. также

Ссылки

Класс CStatusBar

Основные понятия

Реализация строки состояния в MFC