Шаг 15.
Общие принципы построения оконных приложений
На этом шаге мы перечислим общие принципы построения оконных приложений.
Здесь мы сформулируем несколько положений, которые помогут в дальнейшем легко манипулировать окнами
и создавать гибкие, мощные, производительные приложения.
- Свойства конкретного окна задаются при вызове функции CreateWindow определением параметра Style.
Константы, определяющие свойства окна, содержатся в специальных файлах, которые подключаются при компиляции.
Поскольку свойства фактически определяются значением того или иного бита в константе, комбинация свойств - это
просто сумма битовых констант. В отличие от многих рекомендаций для разработчиков все константы здесь определяются
непосредственно в программах.
- Окно создается на основе зарегистрированного класса. Оно может содержать элементы управления - кнопки,
окна редактирования, списки, полосы прокрутки и т. д. Все эти элементы могут создаваться как окна с предопределенными
классами (для кнопок BUTTON, для окна редактирования EDIT, для списка LISTBOX и т. д.).
- Система общается с окном, а следовательно, и с самим приложением посредством посылки сообщений.
Эти сообщения должны обрабатываться процедурой окна. Программирование под Windows, в значительной степени,
является программированием обработки таких сообщений. Сообщения генерируются системой также в
случаях каких-либо визуальных событий, происходящих с окном или управляющими элементами в нем. К таким
событиям относятся перемещение окна или изменение его размеров, нажатие кнопки, выбор элемента в списке,
перемещение курсора мыши и т. п. Это и понятно, программа должна как-то реагировать на подобные события.
- Сообщение имеет код (будем обозначать его в программе MES) и два параметра (WPARAM и
LPARAM). Для каждого кода сообщения придумано свое макроимя, хотя это всего лишь целое число.
Например, сообщение WM_CREATE приходит один раз, когда создается окно, WM_PAINT посылается
окну при его перерисовке, сообщение WM_RBUTTONDOWN генерируется, если щелкнуть правой кнопкой мыши
при расположении курсора мыши в области окна и т. д. Параметры сообщения могут не иметь никакого смысла либо играть
уточняющую роль. Например, сообщение WM_COMMAND генерируется системой, когда что-то происходит с
управляющими элементами окна. В этом случае по значению параметров можно определить, какой это элемент и что с
ним произошло (LPARAM - дескриптор элемента, старшее слово WPARAM - событие, младшее слово
WPARAM - обычно идентификатор ресурса). Можно сказать, что сообщение WM_COMMAND несет сообщение от элемента окна.
- Сообщение может генерироваться не только системой, но и самой программой. Например, можно послать сообщение-команду
какому-либо элементу управления (добавить элемент в список, передать строку в окно редактирования и т. п.). Иногда посылка сообщений используется как
прием программирования. Например, можно придумать свои сообщения так, чтобы при их посылке программа выполнила те или иные действия.
Естественно, это сообщение должно "отлавливаться" либо в процедуре какого-нибудь окна, либо в цикле обработки сообщений. Такой подход
очень удобен, поскольку позволяет фактически осуществлять циклические алгоритмы так, чтобы возможные изменения с окном во время
исполнения такого цикла сразу проявлялись на экране.
Со следующего шага мы начнем рассматривать примеры простых программ на языке Ассемблера.
Предыдущий шаг
Содержание
Следующий шаг