В приложениях Presentation Manager используются различные органы управления, например, кнопки, полосы просмотра, однострочные и многострочные редакторы текстов, различные списки и т. д. Создание таких органов управления с использованием только функций рисования представляет достаточно сложную задачу, так как их поведение нетривиально.
Примером простейшего органа управления служит обыкновенная кнопка, которую можно увидеть практически в любой диалоговой панели. Этот орган управления создается на базе предопределенного класса окна WC_BUTTON и при внимательном изучении ведет себя достаточно сложно. Когда пользователь устанавливает на кнопку курсор мыши и нажимает клавишу мыши, кнопка как бы "уходит вглубь". При отпускании клавиши мыши кнопка возвращается в исходное состояние. Если в диалоговой панели расположено несколько кнопок, при помощи клавиатуры можно выбрать и нажать нужную. Кнопка может находиться в заблокированном состоянии, когда надпись, расположенная на ней, отображается серым цветом. Заблокированную кнопку нельзя нажать.
Можно продолжить перечисление свойств хорошо знакомой вам кнопки, однако и так ясно, что реализуя эти свойства самостоятельно, программист потратил бы немало времени. А ведь есть и более сложные органы управления, например, списки или блокноты. Органам управления можно посылать сообщения, на которые они будут реагировать соответствующим образом. С другой стороны, когда пользователь работает с органом управления, последний сам посылает сообщения в родительское окно.
Как же создаются органы управления в приложениях Presentation Manager?
Все органы управления представляют собой окна, которые являются дочерними по отношению к тем окнам, на которых они изображаются. Эти окна создаются при помощи функции WinCreateWindow на базе преопределенных классов, для которых в Presentation Manager предусмотрены соответствующие функции окна. В результате приложение только создает органы управления, подобно тому как оно создает дочерние окна, а Presentation Manager обеспечивает работу этих органов управления.