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


Класс окна определяет атрибуты окна, такие как его стиль, значок, курсор, меню и оконную процедуру. Первый шаг в регистрации класса окна - это заполнение структуры WNDCLASSEX информацией о классе окна. Дополнительную информацию, см. в статье Элементы класса окна. Затем,  структура передается в функцию RegisterClassEx. Дополнительную информацию, см. Использование классов окна.

Чтобы зарегистрировать общий (глобальный) класс приложения, установите в члене структуры WNDCLASS стиль EXCS_GLOBALCLASS. При регистрации локального класса приложения, не устанавливайте стиль CS_GLOBALCLASS.

Если Вы регистрируете класс окна, используя ANSI версию RegisterClassEx, т. е.  RegisterClassExA, приложение требует,  чтобы система передавала текстовые параметры сообщений в окна созданного класса, используя символьный набор ANSI; если Вы зарегистрировали класс, используя Unicode версия RegisterClassEx, т.е.  RegisterClassExW, приложение требует, чтобы система  передавала текстовые параметры сообщений в окна созданного класса, используя символьный набор Unicode. Функция IsWindowUnicode дает возможность прикладной программе сделать запрос о характере каждого окна. Для получения дополнительной информации о функциях ANSI и Unicode, смотри Соглашения для Прототипов функции.

Исполняемая программа или DLL, которая зарегистрировала класс - владелец класса. Система устанавливает владельца класса из члена hInstance структуры WNDCLASSEX, который  передается в функцию RegisterClassEx, когда регистрируется класс. Для DLLs,  член структуры hInstance должен быть дескриптором экземпляра .dll.

Windows 95/Windows 98/Windows Me: Класс разрушается тогда, когда владелец закрывается или выгружается. По этой причине, процесс должен разрушить все окна, используя класс прежде, чем владелец закроется или выгрузится.

Windows NT/Windows 2000/Windows XP: Класс не разрушается тогда, когда .dll, которая владеет им, выгружается. Это делается потому, что если система вызывает оконную процедуру для окна этого класса, она становится причиной нарушение прав доступа, потому что .dll, содержащая оконную процедуру, больше не находится в памяти. Процесс должен уничтожить все окна, используя класс прежде, чем .dll выгрузится и вызовет функцию UnregisterClass.

Назад в оглавление темы
На главную страницу темы

Hosted by uCoz