Глобальна Subclassing

На глобальному рівні підкласу клас вікна застосування повинні мати ручку на вікно класу. Програма також вимагає маркер, щоб видалити з підкласу. Щоб отримати ручку, застосунок створює прихованого вікна класом, щоб бути subclassed. Після отримання ручку, програма викликає функцію SetClassLong , ручка, GCL_WNDPROC прапор і адреса підкласу процедури. SetClassLong повертає адресу початкового вікна процедури для класу.

Оригінальні вікна процедура використовується адреса у глобальному subclassing так само, як він використовується у випадку subclassing. Процедура підкласу проходить повідомлень до початкового вікна процедури за номером CallWindowProc. Застосування видаляє підкласу класу вікна на заклик SetClassLong знову, вказавши адресу початкового вікна процедура, GCL_WNDPROC прапор і ручку, щоб у вікні класу, будучи subclassed. Застосунок, що глобально підкласи клас контролю необхідно видалити з підкласу коли програма завершує; в іншому випадку може виникнути системи критична помилка.

Глобальна subclassing має ті ж обмеження, як наприклад subclassing, плюс деякі додаткові обмеження. Застосунок не повинні використовувати додаткових байтів або клас, або зразок вікна не знаючи точно як вихідний порядок вікно використовує їх. Якщо додаток слід зв'язати дані з вікна, він повинен використовувати вікно властивостей.

Index