Сведения о классах окон

Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой. Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги. Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги. Каждый класс окна имеет связанную процедуру окна, доступную всем окнам одного класса. Процедура окна обрабатывает сообщения для всех окон этого класса, поэтому управляет их поведением и внешним видом. Для получения дополнительной информации см. раздел Процедуры окна. Перед созданием окна этого класса процесс должен зарегистрировать класс окна. Регистрация класса окна связывает процедуру окна, стили классов и другие атрибуты класса с именем класса. Если процесс задает имя класса в функции CreateWindow или CreateWindowEx , система создает окно с процедурой окна, стилями и другими атрибутами, связанными с этим именем класса. В этом разделе рассматриваются следующие разделы. Эти типы различаются в области и в том, когда и как они регистрируются и уничтожаются. Системный класс — это класс окон, зарегистрированный системой. Многие системные классы доступны для всех используемых процессов, а другие используются только внутренне системой. Так как система регистрирует эти классы, процесс не может их уничтожить. Система регистрирует системные классы для процесса в первый раз, когда один из его потоков вызывает функцию User или Windows Graphics Device Interface (GDI). Каждое приложение получает собственную копию системных классов. Все 16-разрядные приложения под управлением Windows в том же VDM, что и на 16-разрядной версии Windows, делят системные классы. В следующей таблице описаны системные классы, доступные для использования всеми процессами. В следующей таблице описаны системные классы, доступные только для использования системой. Они перечислены здесь для полноты. Глобальный класс приложения — это класс окна, зарегистрированный исполняемым файлом или библиотекой DLL, доступной всем остальным модулям в процессе. Например, .dll может вызвать функцию RegisterClassEx , чтобы зарегистрировать класс окон, определяющий пользовательский элемент управления как глобальный класс приложения, чтобы процесс, загружающий .dll, может создавать экземпляры пользовательского элемента управления. Чтобы создать класс, который можно использовать в каждом процессе, создайте класс окна в .dll и загрузите .dll в каждом процессе. Чтобы загрузить .dll в каждом процессе, добавьте его имя в значение AppInit_DLLs в следующем разделе реестра: HKEY_LOCAL_MACHINEПрограммное обеспечениеКорпорация МайкрософтWindows NTCurrentVersionВиндоус При каждом запуске процесса система загружает указанные .dll в контексте только что запущенного процесса перед вызовом функции точки входа. .dll должен зарегистрировать класс во время процедуры инициализации и указать стиль CS_GLOBALCLASS . Дополнительные сведения см. в разделе "Стили классов". Чтобы удалить глобальный класс приложения и освободить связанное с ним хранилище, используйте функцию UnregisterClass . Локальный класс приложения — это любой класс окна, который исполняемый файл или .dll регистрирует для исключительно своего использования. Хотя можно зарегистрировать любое количество локальных классов, обычно регистрируются только один. Этот класс окна поддерживает процедуру окна главного окна приложения. Система уничтожает локальный класс при закрытии модуля. Приложение также может использовать функцию UnregisterClass для удаления локального класса и освобождения хранилища, связанного с ним. Система поддерживает список структур для каждого из трех типов классов окон. Когда приложение вызывает функцию CreateWindow или CreateWindowEx для создания окна с указанным классом, система использует следующую процедуру для поиска класса. Все окна, созданные приложением, используют эту…
Источник: learn.microsoft.com — learn.microsoft.com/ru-ru/windows/win32/winmsg/about-window-classes