Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Windows программы Builder



Как и все С, С++ программы состоят из объявлений (переменных, классов, типов, функций) и определений функций.

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

1. Инициализирует объекты-компоненты и объект-форма

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

1. Заголовочный файл

2. Файл реализации

Реализуется принцип сокрытия информации. Следовательно, windows программы строятся по модульному принципу. На основе написанного кода создается выполняемый файл (модуль) в результате выполнения следующих этапов:

1. Препроцессор – преобразует исходный текст в соответствии с директивами препроцессора, например – включает текст одних файлов в тексты других и т.д.

2. Компилятор – переводит тексты модулей в машинный (объектный) код, для каждого исходного файла создается объектный файл с расширением *.obj

3. Компоновщик – объединяет объектные файлы в единый загружаемый и выполняемый модуль с расширением exe, модуль запускается на выполнение

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

Головной файл с функцией WinMain, как правило, пользователем не изменяется, рекомендуется его не изменять, и обычно он не просматривается.

 

Структура головного файла проекта

Имеет проект одну форму

#include <vcl.h>                          // visual component library

#pragma…

USERES (“Project1.res);           /макрос, подключающий файл ресурсов (пиктограмма, изображение)

USEFORM (“Unit1.cpp”, Form1);          // макрос ,подключающий файл формы

 

WINAPI WinMain (параметры)

{try                                                    // попытка начать выполнение

           {инициализация объектов-компонентов

            инициализация объектов формы

           }                                         // начало выполнения программы

 Catch (параметры)                  // раздел поимка

           {код, исполняемый в случае ошибки (обработка исключений – аварийных ситуаций), по умолчанию – стандартный обработчик исключений

           }

 Return 0;

}

 

Структура заголовочного файла модуля формы

Содержит директиву условной компиляции.

#ifndef Unit1H

#define Unit1H

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

#include…..                    // директивы помещаются автоматически, они подключают копии файлов , в которых описаны компоненты, переменные, функции, используемые в данном модуле.

#include <math.h>                     // директива пользователя

 

// объявление класса формы TForm1

Class TForm1 : public TForm

{_published:                     

// публикует, открытый раздел, содержит объявление размещенных на форме компонентов и обработчиков событий в них, создается раздел автоматически, вмешиваться в этот раздел запрещено

           TButton *Button1;

           TLabel *Label1;

Void fastcall Button1Click (TObject*Sender);

Private:

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

           Void __fastcall F1(char ch);     // функция доступна только в данном модуле

           Char ch6;                                        // переменная доступна только в данном модуле

Public:

           __fastcall TForm1 (TComponent *Owner);     // конструктор формы

// сюда можно поместить объявление типов, переменных, функций, доступных для других классов и других модулей

           Char ch1;

           Void __fastcall F2(char ch);     // доступны для объектов любых классов и других модулей, но со ссылкой на объект данного класса.

};

 

Extern…..

 

// после объявления класса формы можно поместить объявление типов, переменных, функций, которые не включаются в класс Form.

 

Char ch2;                                                        // ch2 – глобальная переменная, она доступна в пределах данного модуля, и будет доступна в других модулях, если там повторить ее объявление со спецификацией extern.

Void F3 (char ch);                                        // F3 – глобальная функция, она доступна в пределах данного модуля, и будет доступна в других модулях ,если в них повторить ее прототип.

 

#endif;

 

Структура файла реализации модуля Form

#include <vcl.h>

#pragma

#include UnitH             // включаются автоматически

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

#pragma…

#pragma…

#pragma…                      // включаются автоматически

// здесь могут быть включены директивы, нужные пользователю

#include <math.h>

TForm1 *Form1;          // указатель на объект формы, включается автоматически

// определение конструктора фомы

__fastcall TForm1 ::TForm1 (TComponent *Owner)

: TForm (Owner);

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

}

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

 

Char ch3;

Void F4 (char ch)

{Form1->Label1->Caption=Form1->Label1->Caption+ch+Form1->ch1;              // функция классу не принадлежит, поэтому доступ к компоненту label через имя объекта form1 и доступ к переменой ch и ch1, которая находится в public класса через имя объекта form1

}

 

Void __fastcall TForm1 ::F1 (char ch);                 // f1 – принадлежит классу, находится в private, поэтому доступ по имени компонента

{label1->caption=label1->caption+ch+ch1;

}

 

Void __fastcall TForm1 ::F2 (char ch);                 // f2 – принадлежит классу, находится в public

{label1->caption=label1->caption+ch+ch1;

}

 

Void F3 (char ch);                                                        // f3 – не принадлежит классу,

{form1->label1->caption=form1->label1->caption+ch+form1->ch1;

}

 

Void __fastcall TForm1 ::Button1Click (Tobject *Sender);                             

{ch1=’-‘;

ch2=’A’;

ch3=’B’;

ch4=’C’;

label1->caption=””;

F1(ch1);

F2(ch2);

F3(ch3);

F4(ch4);

Label1->Font->Color=clRed;

}

 


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 161; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.024 с.)
Главная | Случайная страница | Обратная связь