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


Регистрация класса окна


Задача функции InitApp - регистрация класса окна. На базе этого класса будет создано главное окно приложения.

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

В области локальных переменных функции определены две переменные - aWndClass и wc:

ATOM aWndClass; // атом для кода возврата WNDCLASS wc; // структура для регистрации // класса окна

Переменная aWndClass используется для временного хранения кода возврата функции RegisterClass. Эта функция относится к функциям программного интерфейса Windows, она и выполняет регистрацию класса. В качестве единственного параметра функции необходимо указать адрес соответствующим образом подготовленной структуры типа WNDCLASS:

aWndClass = RegisterClass(&wc);

Приведем прототип функции RegisterClass:

ATOM WINAPI RegisterClass(const WNDCLASS FAR* lpwc);

Таким образом, процедура регистрации класса окна является несложной. Вам достаточно подготовить одну структуру и вызвать функцию RegisterClass.

Для вас, возможно, непривычно использование переменной специального типа ATOM для передачи результата выполнения функции. Однако такое использование не создает никаких дополнительных трудностей. Тип ATOM отображается на тип UINT, который, в свою очередь, отображается на тип unsigned int (см. файл windows.h):

typedef UINT ATOM; typedef unsigned int UINT;

Переменные типа ATOM используются как идентификаторы текстовых строк (атомы), хранящихся в области памяти, принадлежащей операционной системе Windows. Существует набор функций для работы с этими идентификаторами (для работы с атомами), который мы сейчас не будем рассматривать. Отметим только, что в этом наборе есть функции для получения адреса строки, соответствующей идентификатору, для создания и удаления, а также поиска идентификаторов.

В нашем приложении функция InitApp использует переменную типа ATOM для формирования кода возврата:

return (aWndClass != 0);

Если регистрация класса произошла успешно, функция RegisterClass возвращает атом с ненулевым значением, при этом функция InitApp возвращает значение TRUE.


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



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