Global Subclassing
Global subclassing revolves around the same principles as instance subclassing. With global subclassing, though, we are going to go one level deeper before performing the subclassing. By this I mean that the modifications to the window procedure function pointer will occur in the class itself, not the individual window created from the class. Only those windows created from the class after the subclassing has occurred will use the new subclassed window procedure. When I mention subclassing in this section, I am referring to global subclassing.
Tip
Instance subclassing affects a specific window and its window procedure. Global subclassing affects every window created from a window class that has had its class window procedure modified.
Unlike instance subclassing, global
subclassing can
capture
the window creation
messages -- and, more specifically, WM_CREATE
and WM_NCCREATE. When a
window
is created, the WM_NCCREATE message is sent first
to the window to finish creating its nonclient area in memory. The
WM_CREATE message is sent next to finish creating
the window’s client area in memory. Note that the window is
still not displayed on the screen at this point. Other messages still
need to be sent to the window to position, size, and paint it on the
desktop.
The reason that instance subclassing cannot capture these messages is that when instance subclassing occurs, the window has already been created. Therefore, the window creation messages have already been ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access