Программирование для IBM OS/2© Александр Фролов, Григорий ФроловТом 25, М.: Диалог-МИФИ, 1993, 286 стр. 8 ОРГАНЫ УПРАВЛЕНИЯ
В приложениях Presentation Manager используются различные органы управления, например, кнопки, полосы просмотра, однострочные и многострочные редакторы текстов, различные списки и т. д. Создание таких органов управления с использованием только функций рисования представляет достаточно сложную задачу, так как их поведение нетривиально. Примером простейшего органа управления служит обыкновенная кнопка, которую можно увидеть практически в любой диалоговой панели. Этот орган управления создается на базе предопределенного класса окна WC_BUTTON и при внимательном изучении ведет себя достаточно сложно. Когда пользователь устанавливает на кнопку курсор мыши и нажимает клавишу мыши, кнопка как бы "уходит вглубь". При отпускании клавиши мыши кнопка возвращается в исходное состояние. Если в диалоговой панели расположено несколько кнопок, при помощи клавиатуры можно выбрать и нажать нужную. Кнопка может находиться в заблокированном состоянии, когда надпись, расположенная на ней, отображается серым цветом. Заблокированную кнопку нельзя нажать. Можно продолжить перечисление свойств хорошо знакомой вам кнопки, однако и так ясно, что реализуя эти свойства самостоятельно, программист потратил бы немало времени. А ведь есть и более сложные органы управления, например, списки или блокноты. Органам управления можно посылать сообщения, на которые они будут реагировать соответствующим образом. С другой стороны, когда пользователь работает с органом управления, последний сам посылает сообщения в родительское окно. Как же создаются органы управления в приложениях Presentation Manager? Все органы управления представляют собой окна, которые являются дочерними по отношению к тем окнам, на которых они изображаются. Эти окна создаются при помощи функции WinCreateWindow на базе преопределенных классов, для которых в Presentation Manager предусмотрены соответствующие функции окна. В результате приложение только создает органы управления, подобно тому как оно создает дочерние окна, а Presentation Manager обеспечивает работу этих органов управления. Здесь используется механизм наследования. Приложение создает объект (орган управления), который наследует свойства базового объекта, реализуемые функцией окна, зарегистрированной системой Presentation Manager для того или иного предопределенного класса окна. При необходимости программист может переопределить те или иные методы (обработчики отдельных сообщений) для объекта, используя технику, которая называется Window Subclassing . Однако для обычных органов управления в большинстве случаев этого делать не нужно. Как правило, приложение создает несколько органов управления в своем окне или в окне диалоговой панели. Так как органы управления являются дочерними окнами, они перемещаются вместе с родительским окном. Что же касается диалоговых панелей , то они тоже представляют собой окна, созданные на базе предопределенного класса. Функция этого окна обеспечивает взаимодействие отдельных органов управления (например, обеспечивает клавиатурный интерфейс, позволяющий при помощи клавиш табуляции выбирать нужный орган управления). |