Операционная система Microsoft Windows 3.1 для программиста -том 1


Определение размера окна - часть 4


Вам может показаться странным, что перед выводом содержимого переменных по сообщению WM_PAINT сами переменные не инициализируются. Это не совсем так.

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

Окно создается функцией CreateWindow. При этом функция окна получает следующие сообщения:

Код сообщения Описание сообщения
WM_GETMINMAXINFO При обработке этого сообщения приложение может изменить заданные по умолчанию размеры, расположение, а также минимальные и максимальные размеры окна, которые могут быть получены при изменении этих размеров с помощью мыши
WM_NCCREATE Сообщение оповещает функцию окна о начале процесса создания окна
WM_NCCALCSIZE При обработке этого сообщения приложение может определить размеры внутренней области окна (client area)
WM_CREATE Это сообщение оповещает приложение о том, что окно создано и что приложение может выполнять дополнительные действия по инициализации данных, связанных с окном

Обычно все эти сообщения (кроме последнего) передаются функции DefWindowProc. В некоторых случаях, когда с окном связаны структуры данных, требующие инициализации при создании окна, функция окна перехватывает сообщение WM_CREATE, определяя по нему момент завершения создания окна и выполняя собственные инициализирующие действия.

Для того, чтобы сделать окно видимым, наше приложение вызывает функцию ShowWindow. Эта функция посылает в функцию окна целый каскад сообщений:

Код сообщения Описание сообщения
WM_SHOWWINDOW Сообщение оповещает функцию окна о том, что окно будет отображено или скрыто
WM_WINDOWPOSCHANGING Это сообщение посылается окну при изменении его размеров, расположения на экране или взаимного расположения вдоль оси Z (то есть когда окно перекрывается другими окнами или само перекрывает другие окна; воображаемая ось Z направлена перпендикулярно к плоскости экрана, окна могут перекрывать друг друга, при этом считается, что каждое окно имеет свою "Z-координату")
WM_ACTIVATEAPP Это сообщение посылается окну верхнего уровня (то есть главному окну приложения) и говорит о создании в Windows нового приложения (нового процесса)
WM_NCACTIVATE Сообщение посылается окну, которое должно перерисовать свою внешнюю область (non client area), включающую заголовок, рамку, кнопки изменения размера и т. п.)
WM_GETTEXT Копирование текста заголовка окна
WM_ACTIVATE Сообщение посылается окну, которое изменяет свое состояние из неактивного в активное или наоборот
WM_SETFOCUS Окно получает фокус ввода (все сообщения от клавиатуры направляются в это окно)
WM_NCPAINT Сообщение посылается окну, требующему перерисовки рамки. Приложение может перехватить это сообщение и нарисовать вокруг окна собственную рамку
WM_GETTEXT Копирование текста заголовка окна
WM_ERASEBKGND Сообщение посылается окну при стирании фона его внутренней области
WM_WINDOWPOSCHANGED Это сообщение посылается окну, изменившему свои размеры, расположение на экране или расположение вдоль оси Z
WM_SIZE Сообщение посылается окну после изменения размеров окна
WM_MOVE Сообщение посылается окну после его перемещения
<


Начало  Назад  Вперед



Книжный магазин