Шрифт:
• Указать, за чем должна следить система графического пользовательского интерфейса (например, “Кто-то щелкнул на кнопке Next”).
• Указать, что делать, когда произошло ожидаемое событие.
• Ожидать, пока графический пользовательский интерфейс определит требуемое действие.
Новый интересный аспект заключается в том, что система графического пользовательского интерфейса не просто возвращает управление вашей программе, она разрабатывается так, чтобы по-разному реагировать на разные действия пользователя, такие как щелчок мышью на одной из многих кнопок, изменение размера окна, перерисовка окна после закрытия вложенного окна и открытие выпадающих меню.
Мы просто хотим сказать диспетчеру: “Пожалуйста, проснись, когда кто-то щелкнет на кнопке”, иначе говоря, “Пожалуйста, продолжай выполнять мою программу, когда кто-то щелкнет на кнопке в то время, когда курсор будет в прямоугольной области, представляющей собой изображение моей кнопки”. Это простейшее действие, которое можно себе представить. Однако эта операция не предусмотрена системой — ее необходимо написать самому. Как это сделать — первый вопрос, который мы рассмотрим, приступая к изучению программирования графического пользовательского интерфейса.
16.3. Простое окно
В принципе система (т.е. комбинация библиотеки графического пользовательского интерфейса и операционной системы) непрерывно отслеживает положение курсора мыши и состояние ее кнопок. Программа может проявить интерес к определенной области экрана и попросить систему вызвать функцию, когда произойдет что-нибудь интересное. В частности, мы можем попросить систему вызвать одну из наших функций обратного вызова (callback functions), когда пользователь щелкнет на кнопке. Для этого необходимо сделать следующее.
• Определить кнопку.
• Отобразить ее на экране.
• Определить функцию, которую должен вызвать графический пользовательский интерфейс.
• Сообщить графическому пользовательскому интерфейсу о данной кнопке и функции.
• Подождать, когда графический пользовательский интерфейс вызовет нашу функцию.
Давайте сделаем это. Кнопка — это часть объекта класса
Очевидно, что класс
Наша кнопка инициализируется в конструкторе класса
Нет ничего удивительного в том, что класс
В заключение вызываем функцию
Член