40_______________________________________________Глава 1

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

Последний оператор — Application->Run() начинает собственно выполнен ч г
программы. После этого оператора программа ждет соответствующих событий, ко-
торые и управляют ее ходом.

Перечисленные операторы тела функции WinMain заключены в блок try, по-
сле которого следует блок catch. Это структура, связанная с обработкой так назы-
ваемых исключений — аварийных ситуаций, возникающих при работе програм-
мы. Если такая аварийная ситуация возникнет, то будут выполнены операторы,
расположенные в блоке catch. По умолчанию в этом блоке расположен стандарт-
ный обработчик исключений с помощью функции Application->ShowException.
Подробнее об обработке исключений вы узнаете в главе 4 в разделе 4.9.3.

Последним оператором тела функции WinMain является оператор return(O),
завершающий приложение с кодом завершения 0.

Все описанные выше операторы головного файла приложения заносятся в него
автоматически в процессе проектирования вами приложения. Например, при до-
бавлении в проект новой формы в файл автоматически вставляются соответствую-
щее предложение USEFORM и оператор AppIication->CreateForm, создающий
форму. Так что обычно ничего в головном файле изменять не надо и даже нет необ-
ходимости его смотреть.

Если вам надо ввести какой-то свой текст в головной модуль, вы можете сде-
лать это, введя объявления необходимых констант, переменных, функций, доба-
вить или изменить операторы в теле функции. Например, вам может потребовать-
ся при запуске приложения на выполнение провести какие-то настройки (напри-
мер, настроить формы на тот или иной язык — русский или английский). Или сде-
лать какой-то запрос пользователю и в зависимости от ответа создавать или не со-
здавать те или иные формы. Или проанализировать параметры, переданные в про-
грамму через командную строку.

Пусть, например, вы хотите, чтобы вторая форма вашего приложения Form2
создавалась только в случае, если при запуске приложения через командную стро-
ку в него передана опция Y. В этом случае вы можете изменить заголовок функции
WinMain следующим образом:

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR S, int)

Этот заголовок объявляет строку S, в которой будет содержаться текст коман-
дной строки. Тогда приведенный выше оператор

Application->CreateForm(_classid(TForm2), &Form2) ;

можно заменить оператором

if (S[0] == 'Y')

Application->CreateForm( classid(TForm2), &Form2);

В этом случае если ваше приложение ProJectI будет запускаться командой
Projecti Y, то форма Form2 будет создаваться. В остальных случаях этой формы
не будет.

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

if (Application->MessageBox(

"Хотите создать вторую форму?",
"Подтвердите создание второй формы",
MB_YESNOCANCEL + MB_ICONQUESTION) == IDYES)
Application->CreateForm(_classid(TForm2), &Form2);