|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Global Subclassing
To globally subclass a window class, the application must have a handle to a window of the class. The application also needs the handle to remove the subclass. To get the handle, an application typically creates a hidden window of the class to be subclassed. After obtaining the handle, the application calls the SetClassLong function, specifying the handle, the GCL_WNDPROC flag, and the address of the subclass procedure. SetClassLong returns the address of the original window procedure for the class.
The original window procedure address is used in global subclassing in the same way it is used in instance subclassing. The subclass procedure passes messages to the original window procedure by calling CallWindowProc. The application removes the subclass from the window class by calling SetClassLong again, specifying the address of the original window procedure, the GCL_WNDPROC flag, and the handle to a window of the class being subclassed. An application that globally subclasses a control class must remove the subclass when the application terminates; otherwise, an unrecoverable system error may occur.
Global subclassing has the same limitations as instance subclassing, plus some additional restrictions. An application should not use the extra bytes for either the class or the window instance without knowing exactly how the original window procedure uses them. If the application must associate data with a window, it should use window properties. An application must not globally subclass a system global class. An unrecoverable system error may occur if more than one application globally subclasses a control class. If the application could benefit from globally subclassing a control class, use the technique called superclassing.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Глобальный Subclassing
В глобально подкласс класс окна, приложение должно иметь ручку в окне класса. Приложение также нужно ручка, чтобы удалять подкласс. Чтобы получать ручку, приложение обычно создает скрытое окно класса, чтобы быть subclassed. После получать ручки, приложение называет функцию SetClassLong, определяющую ручку, флаг GCL_WNDPROC, и адрес процедуры подкласса. SetClassLong ВОЗВРАЩАЕТ адрес оригинальной процедуры окна для класса.
Адрес процедуры оригинального окна использован в глобальном subclassing так же использовано в примере subclassing. Процедура подкласса передает сообщения в оригинальную процедуру окна вызывая CallWindowProc. Приложение удаляет подкласс из класса окна вызывая SetClassLong снова, определяя адрес оригинальной процедуры окна, флаг GCL_WNDPROC, и ручка в окно класса subclassed. Приложение, что глобально подклассы управляющий класс должен удалить подкласс когда приложение завершается; в противном случае, неисправимая системная ошибка может произойти.
Глобальное subclassing иметь те же ограничения как пример subclassing, плюс немного дополнительные ограничения. Приложение не должно использовать дополнительные байты для или класс или пример окна не зная точно как оригинальная процедура окна использует ее. Если приложение должно соединить данные с окном, оно должно использовать свойства окна. Приложение не должно глобально подкласс системный глобальный класс. Неисправимая системная ошибка может произойти если более, чем одни глобально подклассы приложения управляющий класс. Если приложение могло бы выиграть из глобально subclassing управляющий класс, используйте технику вызвавшую superclassing.
|
|
|
|
| |