Класс CIndicator
Авторы: Мартинов Г. М. Пушков Р. Л. Кафедра КСУ, МГТУ "СТАНКИН"
Тестовое приложение IndicatorTest с исходным текстом 
Библиотека CIndicator 
Класс CIndicator создает и отрисовывает индикатор в Windows приложениях. Индикатор может иметь несколько состояний, каждое состояние использует свою картинку в качестве фона и свою подпись.
Класс CIndicator предоставляет функциональные возможности по выбору стиля отображения индикатора (рис. 2 - 4) (только текст, только картинка, текст и картинка), заданию выводимой надписи, загрузку фоновой картинки, установки цвета выводимой надписи, установки расстояния между индикаторами (рис. 5), отрисовки индикатора в окне.
 Рис. 1. Пример использования класса CIndicator в стандартном диалоговом приложении.
ПРИМЕЧАНИЕ
Класс написан с помощью MSVC 6.0 с использованием библиотеки MFC и может быть использован только в MFC проектах на языке C++. |
 Рис. 2а. Стиль IND_STYLE_USE_BITMAP установлен, фоновая картинка отрисовывается.
 Рис. 2б. Стиль IND_STYLE_USE_BITMAP не установлен, фоновая картинка не отрисовывается.
 Рис. 3а. Стиль IND_STYLE_DRAW_EDGE установлен, рамка вокруг индикатора отрисовывается.
 Рис. 3б. Стиль IND_STYLE_DRAW_EDGE не установлен, рамки вокруг индикатора нет.
 Рис. 4. Стиль IND_STYLE_DRAW_TEXT не установлен, IND_STYLE_USE_BITMAP установлен, вместо текста используются пиктограммы.
 Рис. 5а. Стиль IND_STYLE_USE_DISTANCE не установлен, расстояния между индикаторами нет.

Рис. 5б. Стиль IND_STYLE_USE_DISTANCE установлен, используется расстояние между индикаторами.
 Рис. 5в. Указание расстояния между индикаторами.
Диаграмма классов, приведенная на рис. 6, иллюстрирует реализацию индикатора.
 Рис. 6. Диаграмма классов в нотации UML.
Пример использования класса CIndicator
Использование индикатора рассмотрим на простейшем примере диалогового приложения.
Чтобы воспользоваться классом CIndicator, в первую очередь, необходимо включить в проект заголовочный файл indicator.h и файл indicator.lib для компоновки. Необходимо также, чтобы файл indicator.dll находился в каталоге с приложением.
Для использования класса CIndicator в своем приложении нужно проделать следующие шаги:
1. Добавить в класс диалога (или другого окна содержащего индикатор) объект класса CIndicator.
class CIndicatorTestDlg : public CDialog
{
private:
CIndicator m_Indicator1;
};
|
2. Установить параметры и состояния индикатора в методе OnInitDialog ().
BOOL CIndicatorTestDlg::OnInitDialog()
{
m_indicator1.LoadBitMapImage (IDB_BITMAP1, 0);
m_indicator1.LoadBitMapImage (IDB_BITMAP2, 1);
m_indicator1.LoadString ("Off", 0);
m_indicator1.LoadString ("Ready", 1);
m_indicator1.ChangeIndicatorStyle (IND_STYLE_USE_BITMAP, TRUE);
m_indicator1.m_nState = 0;
}
|
3. Выполнить отрисовку индикатора в методе OnPaint:
void CIndicatorTestDlg::OnPaint(){
CDC* pdc;
pdc = GetDC ();
CRect rIndBounds (25, 25, 450, 100);
m_indicator1.Draw (pdc, rIndBounds);
}
|
Свойства и методы класса CIndicator
Цвет для вывода текста на индикаторе.
Индекс текущего состояния индикатора.
Половина расстояния между индикаторами.
void ChangeIndicatorStyle(DWORD dwNewStyleFlag, BOOL blAdd = TRUE)
|
Установка стиля отрисовки индикатора.
Параметры:
dwNewStyleFlag - изменяемый флаг индикатора. Может принимать следующие значения:
IND_STYLE_DRAW_TEXT - вывод текста на индикаторе;
IND_STYLE_USE_DISTANCE - использование расстояния между индикаторами;
IND_STYLE_DRAW_EDGE - вывод рамки вокруг индикатора;
IND_STYLE_USE_BITMAP - использование картинки в качестве фона индикатора.
blAdd - если TRUE, то флаг устанавливается, иначе сбрасывается.
const DWORD& get_IndicatorStyle() const
|
Возвращает стиль индикатора.
BOOL LoadString(UINT nStringResourceID, int nStateIndex)
|
Загружает текст для состояния индикатора из ресурсов приложения.
Параметры:
nStringResourceID - идентификатор ресурса.
nStateIndex - номер состояния при котором текст будет выводиться.
Возвращаемое значение:
TRUE, если текст загрузился успешно, иначе FALSE.
BOOL LoadString(CString String, int nStateIndex)
|
Загружает текст для состояния индикатора из строки.
Параметры:
String - строка, содержащая текст.
nStateIndex - номер состояния при котором текст будет выводиться.
Возвращаемое значение:
TRUE, если текст загрузился успешно, иначе FALSE.
BOOL LoadBitMapImage(LPCTSTR lpszBitmapFileResource, int nStateIndex)
|
Загружает картинку для состояния индикатора из файла.
Параметры:
lpszBitmapFileResource - имя файла.
nStateIndex - номер состояния для которого эта картинка будет использоваться.
Возвращаемое значение:
TRUE, если картинка загрузилась успешно, иначе FALSE.
BOOL LoadBitMapImage(UINT nBitmapResourceID, int nStateIndex)
|
Загружает картинку для состояния индикатора из ресурсов приложения.
Параметры:
nBitmapResourceID - идентификатор ресурса.
nStateIndex - номер состояния для которого эта картинка будет использоваться.
Возвращаемое значение:
TRUE, если картинка загрузилась успешно, иначе FALSE.
virtual void Draw(CDC* pdc, const CRect& rcBounds)
|
Выводит индикатор в окно.
Параметры:
pdc - контекст, используемый для вывода.
rcBounds - координаты прямоугольной область окна, в которую будет осуществляться отрисовка индикатора.
Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. |