<<
>>

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

Регистрация класса окна выполняется в строках 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 больше не нужна. У вас появляется возможность сэкономить не- много памяти. Это можно сделать, используя предоставляемый ассемблером тип данных объединения либо инициализируя поля структуры в стеке с последующим их выталкиванием. Здесь есть широкое поле для экспериментов. Дерзайте!
<< | >>
Источник: В. И. Юров. Assembler. Учебник для вузов. 2-е изд. 2003

Еще по теме Регистрация класса окна:

  1. Школьный класс
  2. Одиночки в классе
  3. ПЕРВЫЙ КЛАСС
  4. ПЯТЫЙ КЛАСС
  5. 6.3. Женщина высшего класса
  6. 5. Критическая теория и рабочий класс.
  7. Глава 13. INTJ «Компетентность + независимость = высший класс»
  8. Масса, демократия и рабочий класс
  9. СРАВНИТЕЛЬНАЯ СИСТЕМА КЛАССОВ
  10. ПОТЕНЦИАЛЬНЫЕ ВОЗМОЖНОСТИ ШКОЛЬНОГО КЛАССА КАК ГРУППЫ
  11. 2. Постарайтесь вникнуть в проблему «единственный ребенок – класс»
  12. Статья 210. Государственная регистрация сделки
  13. Статья 54. Лишение воинского, специального звания, ранга, чина или квалификационного класса
  14. Статья 182. Государственная регистрация прав на недвижимость
  15. Статья 89. Государственная регистрация юридического лица
  16. 4. Государственная регистрация сделок
  17. § 3. Форма и государственная регистрация сделок
  18. 7. Государственная регистрация сделок
  19. 3. Регистрация и использование товарного знака
  20. 1. Государственная регистрация прав на недвижимость