Instance Subclassing
An application subclasses an instance of a window by using the
SetWindowLong function. The application passes the GWL_WNDPROC flag, the handle of the
window to subclass, and the address of the subclass procedure to
SetWindowLong. The subclass procedure can reside in either the application's module or a
dynamic-link library (DLL). An application must list the name of the subclass
procedure in the
EXPORTS statement of the application's or DLL's module-definition (.DEF) file.
SetWindowLong returns the address of the window's original window procedure. The
application must save the address, using it in subsequent calls to the
CallWindowProc function, to pass intercepted messages to the original window procedure. The
application must also have the original window procedure address to remove the
subclass from the window. To remove the subclass, the application calls
SetWindowLong again, passing the address of the original window procedure with the
GWL_WNDPROC flag and the handle of the window.
An application can subclass any window in the system; however, when
subclassing a window it does not own, the application must ensure that the subclass
procedure does not destroy the original behavior of the window. Because the
application does not control the window, it must not depend on information about the
window that the owner might change in the future.
An application should not use the extra window bytes or the class bytes for a
window without knowing exactly what the bytes mean and how the original window
procedure uses them. Even so, the application should not use them unless it
owns the window. If the application uses the extra window bytes of a window that
another application owns and the owner changes some aspect of the extra bytes,
the subclass procedure may fail. For this reason, an application should not
subclass a window that belongs to a system global control class. Windows owns the
system global classes, and aspects of the controls might change from one version
of Windows to the next. If the application must subclass a window that belongs
to a system global class, the developer may need to update the application
when a new version of Windows is released.
Because instance subclassing occurs after a window is created, the application
subclassing the window cannot add any extra bytes to the window. Applications
that subclass a window should use the window's property list to store any data
needed for an instance of the subclassed window. For more information, see
Window Properties.
When an application subclasses a subclassed window, it must remove the
subclasses in the reverse order they were performed. If the removal order is not
reversed, an unrecoverable system error may occur.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database