Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
osnovy_programmirovanija_v_srede_lazarus.pdf
Скачиваний:
185
Добавлен:
18.03.2015
Размер:
6.53 Mб
Скачать

6.2 Различия между консольными и графическими приложениями

____________________________________________________________________

Windows), могут быть без изменения скомпилированы на другой платформе

(например, OS X или Linux). При этом следует помнить, что графический ин-

терфейс в различных операционных системах реализован совершенно по-

другому. Так, в Windows GUI основан на функциях WinAPI, а в Linux на биб-

лиотеках GTK-2 или QT.

6.2. Различия между консольными и графическими приложениями

Итак, приложение с GUI отличается от консольного наличием графическо-

го интерфейса (напомню, что консольное приложение использует экран в тек-

стовом режиме, а приложение с GUI в графическом режиме). Но между кон-

сольным и GUI-приложением существует еще одно, более существенное разли-

чие. Консольное приложение, получив управление, далее полностью само кон-

тролирует вычислительный процесс. По мере необходимости запрашивает дан-

ные для работы (оператор read), выводит результаты вычислений на экран (опе-

ратор writeln) и завершает работу по достижению последнего оператора про-

граммы.

Совершенно по-другому работают GUI-программы. Они реагируют на

события. Событие может вызвать действие пользователя, например, нажатие мышью на какую-нибудь кнопку в приложении. Событие может вызвать опера-

ционная система или же событие может породить само приложение. Все собы-

тия отслеживаются операционной системой, которая формирует на каждый тип события соответствующее сообщение. Это сообщение передается в приложе-

ние, на которое приложение должно реагировать в соответствии с алгоритмом своей работы. Т.е. GUI-приложение должно уметь обрабатывать сообщения операционной системы и уметь генерировать и посылать свои собственные со-

общения.

Приложение, после запуска, создает свое окно и запускает так называемый

466

Глава 6 Программирование приложений с графическим интерфейсом

____________________________________________________________________

цикл обработки сообщений. Грубо говоря, оно ждет сообщений от операцион-

ной системы. Роль программиста заключается в разработке кода по обработке сообщений при возникновении какого-либо события.

Сообщения передаются операционной системой именно тому приложе-

нию, которому оно предназначено. Таким образом реализуется мультипро-

граммность операционной системы, т.е. возможность одновременно запускать

иработать с несколькими приложениями.

ВLazarus обработка сообщений заменена на обработку событий. При этом

Lazarus берет на себя всю рутинную работу по расшифровке многочисленных типов сообщений и их не менее многочисленных параметров. Таким образом,

работа программиста значительно облегчается. Программисту достаточно вы-

брать те события, на которые будет реагировать его приложение и написать процедуру по обработке соответствующего события.

В таблице 6.1 приведены некоторые события и условия, при которых они возникают.

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

OnCreate (создание окна) может в это время выполнить некоторые подгото-

вительные операции, такие как открытие файлов, инициализацию некоторых переменных и т.д.

Разумеется, не обязательно писать обработчики событий для всех возмож-

ных событий. В этом случае, если отсутствует обработчик какого-нибудь собы-

тия, то это событие просто не будет обработано вашим приложением. Напри-

мер, если в приложении отсутствует обработчик события OnKeyDown, то на нажатие клавиш на клавиатуре приложение будет реагировать стандартным об-

разом, например при нажатии Alt+F4 окно приложения будет закрыто.

467

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]