Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по программированию.doc
Скачиваний:
11
Добавлен:
13.11.2019
Размер:
1.2 Mб
Скачать

Int pascal

WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpszCmdLine,

Int nCmdShow)

{

MessageBox(NULL,"Привет","Без окна",MB_OK);

return 0;

}

В любом файловом менеджере или проводнике Window перейдите в папку и сделайте двойной щелчок мышью по этому файлу. Предполагается, что файлы с расширением .срр связаны с Builder’ом. Builder загрузит файл и предложит создать проект для приложения, с чем следует согласиться. Далее, обычным образом клавишей F9 нужно запустить обработку проекта – компиляцию, линковку и запуск. В результате будет создан и выполнен исполняемый файл программы, и на экране вы увидите то, что показано ниже.

Что же мы здесь имеем? Обратимся к листингу. Прежде всего, отметим, что для всех приложений Windows, а именно с такими программами мы и работаем, практически всегда требуется подключение заголовочного файла windows.h. Далее, если мы не используем форму, то есть отходим от Builder-проекта по умолчанию, то необходимо использовать главную функцию WinMain. Это - аналог функции main в языке С. С нее начинается выполнение программы, а у нас она вообще единственная. В наши задачи сейчас не входит подробно знакомить читателя с синтаксисом тех или иных конструкций языка. Поэтому примите оформление функции WinMain в листинге в качестве «истины в последней инстанции», а если это вас не устраивает (и это прекрасно!), то читайте документацию. Укажем только, что функция имеет целый тип и, поэтому, последним выражением имеет оператор возврата return 0, хотя это возвращаемое значение нигде не используется.

Внутри функции WinMain мы вольны делать все, что нам захочется. А захотелось нам создать приветствие, но немного отличающееся от приветствия в первой программе. Для этой цели мы использовали функцию MessageBox. Если вы посмотрите в справку по этой функции, то увидите, что первым аргументом у нее должен быть указатель порождающего окна, а поскольку у нас такового нет, мы и поставили здесь NULL. Второй аргумент - текст, выводимый в окно сообщения. Здесь все ясно. Третий аргумент - текст в заголовке окна, что также не требует пояснений. Последний аргумент содержит системную константу, определяющую, что еще будет в окне. В данном случае в окне будет еще кнопка ОК, которая закрывает как само окно сообщения, так и всю программу.

Большинство приложений, создаваемых в Builder’е могут иметь в своей основе окно, задаваемое формой так, что именно такая конфигурация нового создаваемого проекта предлагается по умолчанию. Огромное упрощение разработки программ достигается с помощью размещения на форме так называемых визуальных компонентов (VC), уже упомянутых и использованных в первой программе. Несомненно, и мы в дальнейшем будем использовать визуальные компоненты в нашей работе, в связи с чем необходимо поговорить об этих инструментах более подробно.

По сути дела VC являются объектами специализированных классов, инкапсулирующих в себе свойства (properties) и методы (methods). Кроме того, к членам классов визуальных компонентов следует отнести так называемые события (events) – «происшествия», случающиеся с VC. Главной особенностью этих специальных классов является то, что объекты VC обычно отображаются в окне формы в виде разнообразных визуальных конструкций: кнопок, полей ввода данных, полей выбора и многих других «картинок», которые мы видим при работе готовых программ в Windows. Как это не парадоксально звучит, но существуют и не визуальные VC. Эти объекты не отображаются в окнах работающих программ, а используются именно при разработке приложений. Вот со всеми этими премудростями нам сейчас и предстоит вкратце познакомиться. По-прежнему не будем излагать материал последовательно и скрупулезно, а проиллюстрируем все необходимое примерами.

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

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

Создадим новый проект с формой, а это мы уже умеем делать, предварительно подготовив папку для проекта. Сохраните пока пустой проект. Поместите на форму визуальный компонент Label (метка) со вкладки Standard библиотеки VCL. Этот компонент обозначен большой буквой А. Как только вы положили VC на форму, он отобразится в окне инспектора объектов (Object Inspector) слева от формы. Здесь будет открыта вкладка свойств объекта Properties. В поле Caption сейчас написано Label1. Замените надпись на ЗАКРЫТЬ ПРОГРАММУ ЧЕРЕЗ. Текст в метке на форме соответственно изменится. Метку можно перемещать по форме, захватив ее мышью. Передвиньте компонент ближе к верхнему правому углу. Если после этого метка перестала отображаться в инспекторе (и там стала отображаться форма), просто снова щелкните по ней мышкой. Активизируйте свойство Color и по стрелке справа выберите цвет фона. Мы сделали его белым. Поместите правее метки компонент Edit с той же вкладки Standard. Свойство Text замените на 5000. Правее только что созданного поля редактирования поместите еще одну метку с текстом МИЛЛИСЕКУНД и тоже белым фоном. На этом этапе можно проверить, все ли у нас в порядке. Сохраните проект и запустите его на исполнение. У вас должно появиться окно с отображением созданных элементов. Закройте его.

Со вкладки System библиотеки визуальных компонентов возьмите таймер (Timer) и разместите его на форме. Таймер работает следующим образом. Как только он становится доступным, то есть, как только его свойство Enable становится ИСТИНОЙ (true), начинается отсчет времени. После того, как пройдет столько миллисекунд, сколько задано в свойстве таймера Interval, наступает событие OnTimer, реакцию на которое нужно запрограммировать. Таким образом, установите свойство таймера на вкладке Properties инспектора объектов в false (ЛОЖЬ) – сначала таймер должен быть заблокирован. Перейдите на вкладку событий и сделайте двойной щелчок мышью по пустому полю правее названия события OnTimer. Сразу же откроется главный текстовый модуль программы, где тут же сформируется функция-обработчик события. Тело функции пока пусто. Здесь мы должны написать выражение, задающее реакцию на событие. Реакция очень проста – закрыть программу. Для этого можно, например, вызвать функцию exit(1). Теперь обработчик события в текстовом модуле должен выглядеть следующим образом: