Особенности программирования в среде Windows

Часть 5

Визуальное программирование в среде C++ Builder

 

Методические указания к лабораторным и самостоятельным работам для слушателей курсов повышения квалификации и студентов всех форм обучения всех специальностей

 

Печатается по решению редакционно-издательского совета

УГТУ–УПИ от 18.01.2007 г.

 

 

Екатеринбург

УГТУ-УПИ


 

УДК 004.43 (075.8)

Составитель А.В. Кибардин

Научный редактор доц., канд. техн. наук Б.В.Семенов

 

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ с++ : методические указания к лабораторным и самостоятельным работам. В 5 ч. Ч. 5. Визуальное программирование в среде С++ Builder / сост. А.В. Кибардин. Екатеринбург : УГТУ–УПИ, 2007. 40 с.

 

Методические указания описывают технологии визуального проектирования и событийно-управляемого программирования на языке С++ в среде C++ Builder.

Методические указания ориентированы на студентов, аспирантов, слушателей ФПК и подготовительного отделения, обучающихся основам современных информационных технологий.

 

Библиогр.: 4 назв. Рис. 4.

 

Подготовлено факультетом повышения квалификации преподавателей

и профессиональной переподготовки.

 

© Уральский государственный

технический университет – УПИ, 2007

 


ВВЕДЕНИЕ

В данной части методических указаний описаны технологии событийно-управляемого и визуального программирования на языке С++ в среде С++ Builder.

Для работы с методическими указаниями необходимо владеть основами программирования на языке С++ и знать следующие технологии:

- структурного программирования;

- модульного программирования;

- объектно-ориентированного программирования (ООП).

Этим технологиям посвящено большое количество учебной литературы, в том числе [1-3].


ОСНОВЫ ПРОГРАММИРОВАНИЯ В СРЕДЕ C++ Builder

Особенности программирования в среде Windows

Система C++ Builder предназначена для разработки программ, работающих в среде Windows. Программирование в Windows имеет следующие особенности:

1) программный код состоит из процедур обработки сообщений, которые Windows посылаетприложению (программе);

2) Windows фиксирует возникающие в программах и аппаратуре события и посылает соответствующие сообщения в программу;

3) одновременно могут выполняться несколько программ. Эти программы делят между собой ресурсы компьютера;

4) работающая программа находится в рабочей области памяти и ожидает сообщений от Windows,на которые она должна реагировать;

5) взаимодействие с аппаратным обеспечением происходит через графический интерфейс устройств.

 

Windows предлагает разработчику программы так называемую управляемую событиями среду, когда код программы исполняется как реакция на определенное событие.

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

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

Каждое приложение выполняется в своем собственном окне, имеющем уникальное описание – дескриптор. Поскольку в записи сообщения указывается, кому предназначено данное сообщение, то Windows пересылает его по указанному адресу.

Приложение должно быть в состоянии обработать любое сообщение. Практически для каждого события Windows имеет стандартную процедуру обработки. В приложении должно быть указано, что при возникновении события NM, для которого в программе нет специального кода, должна выполняться стандартная процедура Windows.

Большинство стандартных сообщений программы обрабатывается автоматически, поскольку все объекты C++ Builder имеют встроенный механизм - процедуру обработки сообщений.

 

 

Основные понятия ООП в С++ Builder

 

Программирование в С++ Builder основывается на языке C++.

В C++ вводится специальный тип данных – класс. Класс – это структура данных, состоящая из следующих элементов:

- полей;

- методов;

- свойств.

Поля содержат данные определенного типа.

Методы – это функции, выполняющие определенные действия.

Свойства – это поля данных, которые влияют на поведение объекта. Они отличаются от обычных полей тем, что присвоение им значений связано с вызовом соответствующих методов.

Для описания класса в языке используется зарезервированное слово class.

Класс объявляется в модуле приложения (см. ниже).

В C++ базовым классом для всех классов является абстрактный класс TObject. Поэтому, если нужно создать новый класс данных, то необходимо использовать следующее описание:

 

class TNewObject : [private | protected | public] TObject

{тело класса};

 

Напоминаем, что при описании класса в его заголовке перечисляются все классы, являющиеся для него базовыми. Возможность обращения к элементам этих классов регулируется с помощью ключей доступа private, protected и public (см.[3]).

Объект является экземпляром класса. Экземпляр класса реализуется переменной данного типа класса, например:

 

TNewObject *NewObject;

 

Управление файлами в С++ Builder

В начале работы над проектом C++ Builder предоставляет в распоряжение разработчика фактически готовую программу. Эта программа состоит из одного окна с заголовком Form1 и обладает функциональными возможностями стандартного окна Windows. При этом создаются следующие файлы прило-жения.

Главный модуль проекта Project1.cpp содержит код главной программы, написанной на языке C++. В файле содержатся ссылки на все формы проекта и относящиеся к ним модули. В нем также находится код инициализации приложения:

 

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

//---------------------------------------------------------------------------

USEFORM("Unit1.cpp", Form1);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize();

Application->CreateForm(__classid(TForm1), &Form1);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

catch (...)

{

try

{

throw Exception("");

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

}

return 0;

}

//---------------------------------------------------------------------------