Регистрация класса окна выполняется в строках 75-108. Под классом окна пони- мается совокупность присущих ему характеристик, таких как стиль его границ, формы указателя мыши, значков, цвет фона, наличие меню, адрес оконной проце- дуры, обрабатывающей сообщения этого окна. Класс окна можно впоследствии использовать для создания окон приложения функцией СrеаtеWiпdоw. Характери- стики окна описываются с помощью специальной структуры WNDСLАSS (или ее рас- ширенного варианта WNDСLАSSЕХ в Win32). В сегменте данных в строке 41 листинга 16.4 определен экземпляр структуры WNDСLАSSЕХ — wсl. Первое поле структуры WNDCLASSEX cbSize должно содержать длину структуры. Команда в строке 80 загружает в это поле соответствующее зна- чение. В поле style можно определять стиль границ окна и его поведение при пере- рисовке. Значение стиля является целочисленным и формируется из констант. Каждая константа означает некоторую предопределенную характеристику. Вклю- чаемый файл wiпusеr.h компилятора VC++ содержит символические названия этих констант. Эти же константы, но уже в соответствии с требованиями синтаксиса ассемблера, описаны в файле wiпdоwsА.iпс. В строке 81 листинга 16.4 комбинация констант CS_HREDRAW и CS_VREDRAW определяет необходимость полной перерисов- ки окна при изменении его вертикального или горизонтального размера. В строке 80 в поле LрfпWпdРrос записывается адрес оконной функции. С помощью этой функции все окна, созданные позднее функцией CreateWindow на основе клас- са, для которого выполняется регистрация, будут обрабатывать посланные им со- общения. Поля cbClsExtra и cbWndExtra служат для указания количества байтов, дополни- тельно резервируемых в структуре класса окна WNDPROC и структуре параметров окна, которая поддерживается внутри самой системы Windows. Обычно эти поля инициализированы нулевыми значениями. Строка 85 формирует в ноле hlпstапсе дескриптор приложения, полученный ранее функцией GеtМоdulеНапdlеА. В строках 86-95 в поля hlсоп и hCursor загружаются дескрипторы значка и ука- зателя мыши. После запуска приложения значок будет отображаться на панели задач Windows и в левом верхнем углу окна приложения, а указатель мыши по- явится в области окна. Значки и указатели мыши представляют собой ресурсы и находятся в отдельных файлах. Windows предоставляет в распоряжение програм- миста ряд стандартных изображений указателей мыши и значков. В файле winuser.h содержатся символические имена констант, обозначающих стандартные указате- ли мыши и значки. Обратите внимание на первый параметр функций LоаdСursоrА и LоаdlсопА — hlпst. Это дескриптор приложения, содержащий базовый адрес ре- сурса значка или указателя мыши, загруженного в процесс. Если используются их стандартные изображения, то параметр hlnst равен NULL Команды в строках 96-99 формируют поле hbrBackground, которое должно со- держать значение дескриптора кисти. Кисть представляет собой ресурс в виде шаблона пикселов, которым закрашивается некоторый объект, в данном случае — фон окна приложения некоторого класса. Для получения такого дескриптора не- обходимо использовать функцию GеtStосkОbjесt. В качестве параметра ей переда- ется имя нужной кисти. В файле wiпдdi.h содержатся символические имена кон- стант, определяющих стандартные кисти. В строке 101 в поле IрszМепuNаmе записывается указатель на ASCIIZ-строку с именем меню. Если меню не используется (как в нашем случае), то в поле запи- сывается значение NULL. Поле hlсопSm в строке 103 можно рассматривать как альтернативу полю hlсоп. В него помещается дескриптор значка, который будет связан с данным классом окна. Если поле hlconSm нулевое, то система будет использовать значок, опреде- ленный полем hlcon. И последнее действие при описании класса окна — присвоение данному классу уникального имени. Это имя описано в виде ASCIIZ-строки в поле szСlаssNаmе сег- мента данных, и указатель на него формируется в поле IрszСlаssNаmе (строка 102). После инициализации структуры необходимо зарегистрировать класс окна в системе. Это действие выполняется в строках 105-108 с помощью функции RegisterClassExA, которой в качестве параметра передается указатель на структуру WNDCLASSEX. Необходимо заметить, что после того как класс окна зарегистрирован, структу- ра WNDCLASSEX больше не нужна. У вас появляется возможность сэкономить не- много памяти. Это можно сделать, используя предоставляемый ассемблером тип данных объединения либо инициализируя поля структуры в стеке с последующим их выталкиванием. Здесь есть широкое поле для экспериментов. Дерзайте!