Принципы объектно-ориентированного визуального программирования_____41

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

Окно запроса пользователю            •              . „.,                       ,::  ''S

^^..^ : Хотите соанать еторута форму? .'у::::.      •:?::

V К^;„^Яа-','„^ 1|       Нет            Отмена

Вы можете, конечно, ввести в головной файл программы и другие операторы,
функции и т.п. Все это можно сделать, но это будет плохой стиль программирова-
ния, поскольку он противоречит принципу модульности. Выше уже говорилось о
важности соблюдения этого принципа. Все необходимые вам в начале выполнения
процедуры и функции настройки помещайте в один из модулей форм, а еще луч-
ше — в отдельный модуль без формы. Такой модуль, не связанный с какой-то фор-
мой, можно включить в приложение, выполнив в среде разработки C+4-Builder
команду File New и щелкнув на пиктограмме Unit. В этом или ином модуле вы мо-
жете предусмотреть функцию, которая осуществляет все необходимые настройки.
Тогда в головной программе достаточно будет вызвать в соответствующий момент
эту функцию, передав в нее, если необходимо, какие-то параметры, например,
текст командной строки.

Хороший стиль программирования ————————————————————————

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

Предупреждение ———.———————————————————————————————

Учтите, что все определенные вами в головном файле проекта глобальные константы и пе-
ременные будут доступны в другом блоке только в случае, если они объявлены там со спе-
цификацией extern (см. главу 11 раздел 11.4.2). функции, определенные вами в головном
файле проекта, будут доступны в другом блоке только в случае, если там повторен их прото-
тип (см. главу 11 раздел 11.5.1).

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

ttinclude "Unitl.h"
подключающую файл Unitl.h, изменить заголовок функции WinMain на

WINAPI WinMain (HINST'ANCE, HINSTANCE, LPSTR S, int)

т.е. ввести параметр S, воспринимающий командную строку, и поставить первым
выполняемым оператором функции WinMain оператор:

begin(S) ;

вызывающий функцию begin и передающий в нее текст командной строки.
Сама функция begin может иметь вид: