Научно-исследовательская лаборатория систем ЧПУ
Научно-исследовательская лаборатория систем ЧПУ

Поиск по сайту:
 

Расписание курсов "Программирование SINUMERIK 810D/840D/840Di"



Класс CIndicator

Авторы: Мартинов Г. М.
Пушков Р. Л.
Кафедра КСУ, МГТУ "СТАНКИН"


Тестовое приложение IndicatorTest с исходным текстом  размер файла: 56,1 Kб

Библиотека CIndicator  размер файла: 12,6 Kб

Класс 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()

{

// ...

// ------------ CIndicator Init ---------------

	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

COLORREF m_ForeColor

Цвет для вывода текста на индикаторе.

unsigned int m_nState

Индекс текущего состояния индикатора.

int m_nDistance

Половина расстояния между индикаторами.

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 - координаты прямоугольной область окна, в которую будет осуществляться отрисовка индикатора.


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