Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Обучение VC++ / ЛекцииИнтернетС++ / Лекция_лаб_практикум.doc
Скачиваний:
64
Добавлен:
16.02.2016
Размер:
932.35 Кб
Скачать

Всплывающие подсказки

Всплывающие подсказки (ToolTips) встречаются в разных. Windows-приложениях, в том числе и в Visual C++. Если поместить курсор мыши на кнопку панели инструментов и оставит его там, то через определенный промежуток времени рядом с кнопкой появится маленькое окошко с текстом.

Чтобы создать всплывающую подсказку, просто добавьте ее в конец подсказки для меню, начав текст с символа новой строки \n. Редактор ресурсов позволяет модифицировать строку подсказки при редактировании изображений кнопок на панели инструментов. Для этого просто дважды щелкните левую кнопку мыши.

Строка состояния

Окно строки состояния не принимает ввод от пользователя и не генерирует командных сообщений. Его задача — просто показывать под управлением программы текст в соответствующих секциях.

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

Определение секций в строке состояния

Секции в строке состояния определяются статическим массивом indicators, который АррWizard создает в файле MainFrm.cpp. Константа ID_SEPARATOR задает секцию для строки сообщений, а другие константы служат идентификаторами строковых ресурсов и определяют секции индикаторов.

Функция-член CStatusBar::SetIndtcators, вызываемая в производном классе окна-рамки приложения, приводит строку состояния в соответствие с содержимым массива indicators.

Строка сообщений

В этой секции показывается строка, задаваемая (динамически) программой. Чтобы определить выводимый текст, сначала получите доступ к объекту строки состояния, после чего вызовите функцию-член CStatusBar::SetPaneText, передав ей индекс секции. Индексы начинаются с 0, нулевая секция — крайняя слева, секция 1 размещается правее и т.д.

Приведенный ниже фрагмент кода входит в функцию-член класса “вид”. Обратите внимание: здесь приходится сначала подниматься на уровень приложения, а потом возвращаться к основному окну-рамке:

CMainFrame* pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;

CStatusBar* pStatus = &pFrame->m_wndStatusBar;

pStatus->SetPaneText(0, "строка сообщения для первой секции");

Обычно длина секции сообщений составляет ровно четверть ширины экрана. Однако у первой секции (индекс 0) длина переменная; она не менее четверти ширины экрана и может быть увеличена, если в строке состояния есть место.

Индикатор состояния

Секция индикатора состояния связана с единственной строкой ресурса, которая показывается или скрывается в соответствии с логикой функции-обработчика. Индикатор обозначается идентификатором строкового ресурса, и тот же идентификатор применяется для распределения сообщений обновления интерфейса. Индикатор Caps Lock обрабатывается в классе окна-рамки при помощи приведенных ниже элемента таблицы сообщений и функции-обработчика (функция Enable включает индикатор, если активен режим Caps Lock):

ON_UPDATE_COMMAND_UI (ID_INDICATOR_CAPS, OnUpdateKeyCapsLock)

void CMainFrame::OnUpdateKeyCapsLock(CCmdUI* pCmdUI)

{

pCmdUI->Enable(::GetKeyState(VK_CAPITAL) & 1);

}

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