Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры печатать.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
379.36 Кб
Скачать

128. Линейчатая диаграмма с использованием меню и окон диалога.

Вот листинг файла определения модуля 24BAR.DEF:

;24BAR.DEF for Visual C++

NAME 24BAR

DESCRIPTION 'Microsoft Foundation Class Bar Chart Program'

; Программа для вывода столбчатой диаграммы на основе MFC

EXETYPE WINDOWS

STUB 'WINSTUB.EXE'

CODE PRELOAD MOVABLE

DATA PRELOAD MOVEABLE MULTIPLE

HEAPSIZE 4096

В заголовочный файл 24BAR.H входят определения классов CMaiaWnd, CTheApp и CBarDataDialog, производных от классов из библиотеки MFC.

class CMainWnd : public CFrameWnd

{

public:

CMainWnd(); afx_msg void OnPaint(); afx_msg void OnSize(UINT,int,int);

afx_msg int OnCreate(LPCREATESTRUCT cs); afx_msg void OnAbout();

afx_msg void OnBarData(); afx_msg void OnExit(); DECLARE_MESSAGE_MAP();};

class CTheApp : public CWinApp

{public:

virtual BOOL InitInstance();};

class CBarDataDialog : public CModalDialog

{public:

CBarDataDialog(CWnd* pParentWnd= NULL)

: CModalDialog("BarDlgBox", pParentWnd)

{ }

virtual void OnOK();

};

Заголовочный файл для ресурсов содержит константы для идентификации меню и двух окон диалога.

#define IDM_ABOUT 10

#define IDM_INPUT 20

Файл описания ресурсов 24BAR.RC определяет меню и включает в себя ссылку (командой rcinclude) на описания окон диалога, находящиеся в отдельном файле.

#include <windows.h>

#include <afxres.h>

#include "24BARR.H"

BarMenu MENU

BEGIN

POPUP "Bar_Chart"

BEGIN

MENUITEM "About Box...", IDM_ABOUT

MENUITEM "Exit", IDM_EXIT

END

END

rcinclude 24BAR.dlg

Заголовочный файл 24bar.H.

Отметьте, например, схожие объявления функций CMainWnd и таблицы сообщений.

afx_msg void OnPaint();

afx_msg void OnSize(UINT,int,int); afx_msg int OnCreate(LPCREATESTRUCT cs);

afx_msg void OnAbout(); afx_msg void OnBarData(); afx_msg void OnExit();

Заголовочный файл ресурсов 24barr.H, файл описания ресурсов 24bar.Rc и файл описания окна диалога 24bar.Dlg.

Все эти файлы преобразуются компилятором ресурсов в единственный файл ресурсов 24BAR.RES.

Заголовочный файл ресурсов 24BARR.H содержит три константы для обозначения пунктов меню: IDM_ABOUT, IDM_INPUT и IDM_EXIT, а также тринадцать констант для элементов окон диалога. Три из них, DM_TITLE, DM_XLABEL и DM_YLABEL, обозначают соответственно заголовок диаграммы и подписи к осям х и у. Остальные десять (с DM_P1 по DM_P10) предназначены для задания высоты каждого из столбцов. Все они будут целыми числами.

Файл описания ресурсов содержит описание меню, которое показано на рисунке. Сопоставьте текст описания меню с изображением этого меню на экране.

Файл описания окон диалога содержит описания окна диалога "О Программе" и окна диалога ввода данных, который показан на рисунке.

Оба окна диалога были созданы редактором диалогов Dialog Editor, который способен создавать файлы описания окон диалога с расширением .DLG.

Исходный текст программы 24bar.Cpp.

В этом разделе основное внимание будет уделено тем возможностям программы, которые не встречались в предыдущих примерах. Приложение 24BAR даст пользователю возможность создавать линейчатые диаграммы презентационного качества. Пользователь может, пользуясь модальным окном диалога, ввести заголовок диаграммы, подписи к осям и высоты столбцов (до десяти значений). Диаграмма будет правильно масштабирована в окне, и каждый столбец будет изображен цветом из массива заранее определенных цветов.

В начале программы максимальное количество столбцов, maxnumbar, задается равным десяти:

#define maxnumbar 10

Это значение можно слегка варьировать, не забывая, однако, что хорошая диаграмма не загромождает экран слишком большим количеством столбцов.

Как видно из приведенного текста, начальные значения для заголовка и подписей к осям, а также высоты столбцов, содержатся в глобальных переменных.

char szTString[80]="(bar chart title area)"; // (место для заголовка диограммы)

char szXString[80]="x-axis label";//подпись к оси x

char szYString[80]="y-axis label";//подпись к оси y

int iBarSize[maxnumbar]={20,10,40,50};

Размеры рабочей области окна также заносятся в глобальные переменные. Их имена такие же, как в прошлом примере:

int m_cxClient, m_cyClient;

Поскольку программа отслеживает размер рабочей области, диаграмму можно масштабировать в соответствии с размерами окна.

Цвета столбцов последовательно выбираются из массива dwColor. Если бы в диаграмме было три столбца, они имели бы черный, красный и зеленый цвета. Можно поменять местами цвета, если нужно.

Классы CBrush и CFont позволяют передать объект-кисть и объект-шрифт методам классов, производных от CDC (базовый класс для контекста устройства). Для создания новой кисти и шрифта используется следующая конструкция:

CFont newfont; CFont* oldfont; CBrush newbrush;

CBrush* oldbrush;

129. Создание приложений с использованием библиотеки MFC. Особенности Microsoft Foundation Classes, относящиеся к Windows 95 и NT. Простое приложение, использующее MFC и несколько графических примитивов. Изучаем WIN32MFCTMP.CPP. Запуск программы WIN32MFCTMP.

Как отмечено ранее, библиотека содержит две важные группы классов: в одну из них входят десятки классов для программирования под Windows 95 и Windows NT, а в другую — классы для создания приложений OLE. За счет использования библиотеки MFC упрощается разработка программ и облегчается их сопровождение.

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

По сравнению с традиционными библиотеками функций, используемыми при программировании на С, библиотека Microsoft Foundation Classes дает большие преимущества. Они объясняются прежде всего использованием классов C++ и состоят в том, что:

  • Не происходит коллизии имен функций и переменных

  • Алгоритмы и данные инкапсулированы в иерархии классов

  • Классы представляются естественным расширением языка

  • Уменьшается объем исходного текста (как результат правильного проектирования библиотеки классов)

Существенное уменьшение объема исходного текста, необходимого для создания и отображения окна в Windows 95 или Windows NT, достигается исключительно за счет использования библиотеки Microsoft Foundation Classes.