Суперкласс процедуру окна

Суперкласс — это метод, который позволяет приложению для создания нового класса окна с базовой функциональности существующего класса, а также улучшения, предоставляемым приложением. Суперкласс основан на существующем классе окна под названием базовый класс. Часто базовый класс является система Глобальный класс окна такие как элемент управления edit, но это может быть любой класс окна.

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

В отличие от процедуры подкласс суперкласса процедура может обрабатывать сообщения создания окна (WM_NCCREATE, WM_CREATEи т.д.), но она должна также передать их в исходную процедуру окна базового класса тем, что процедуры базового класса окна может выполнять свою процедуру инициализации.

Для суперкласса класс окна приложение сначала вызывает функцию GetClassInfo для извлечения сведений о базовом классе. GetClassInfo заполняет WNDCLASS структуру с использованием значений из WNDCLASS структура базового класса. Затем приложение копирует свой собственный экземпляр обработчика в hInstance член WNDCLASS структуры и копирует имя суперкласса в lpszClassName член. Если базовый класс имеет меню, приложение должно предоставлять новое меню те же идентификаторы меню и скопируйте имя меню в lpszMenuName член. Если суперкласса процедура обрабатывает сообщения WM_COMMAND и не проходит процедуру базового класса окна, меню не нужно иметь соответствующие идентификаторы. GetClassInfo не возвращает lpszMenuName, lpszClassNameили hInstance член WNDCLASS структуры.

Приложение необходимо также задать lpfnWndProc член WNDCLASS структуры. GetClassInfo функция заполняет этот член с адресом в исходную процедуру окна для данного класса. Приложение необходимо сохранить этот адрес для передачи сообщений в исходную процедуру окна и затем скопировать адрес суперкласса процедуры в lpfnWndProc член. Приложение может при необходимости, измените любые другие члены структуры WNDCLASS . После того, как он заполняет WNDCLASS структуры, приложение регистрируется суперкласса, передав адрес структуры функция RegisterClass . Суперкласса может затем использоваться для создания окон.

Потому что суперкласс регистрирует нового класса окна, приложение можно добавить высшего сорта байтов и дополнительное окно байтов. Суперкласса не должны использовать оригинальные дополнительные байты для базового класса или окно по тем же причинам, что экземпляр подкласса или глобальных подкласс их не следует использовать. Кроме того если приложение добавляет дополнительные байты для его использования для класса или экземпляра окна, она должна иметь ссылку дополнительные байты числа дополнительных байт с помощью исходного базового класса. Потому что число байтов, используемых базовым классом может варьироваться от одной версии базового класса на следующий, начальное смещение для суперкласса дополнительные байты также могут варьироваться от одной версии базового класса в следующий.

Index