Instance Subclassing: An Example
As we saw in Chapter 3, instance subclassing involves using the SetWindowLongPtr function to replace the window procedure of a specific window instance.
In this section, we’ll write our first simple subclassing application. The application will have two buttons, one to subclass the VB form and another to remove the subclass. The only other control will be a multiline text box that will display messages as they are sent to this form. I will add some more functionality to this application in the example following this one.
Let’s start with the layout of the form. It’s rather simple; the nondefault properties are listed in Table 4-1, and the form is displayed in Figure 4-2.
Table 4-1. Nondefault Properties of Form and Controls for Subclassing Example
|
Object |
Property Name |
Property Value |
|---|---|---|
|
frmCh4 |
Caption |
“Chapter 4 -- Subclassing Example” |
|
frmCh4 |
ClientHeight |
3612 |
|
frmCh4 |
ClientLeft |
48 |
|
frmCh4 |
ClientTop |
336 |
|
frmCh4 |
ClientWidth |
6960 |
|
Text1 |
Height |
3372 |
|
Text1 |
Left |
1560 |
|
Text1 |
MultiLine |
-1 `True’ |
|
Text1 |
ScrollBars |
2 `Vertical’ |
|
Text1 |
Top |
120 |
|
Text1 |
Width |
5292 |
|
cmdUnSubclass |
Caption |
“Un-Subclass” |
|
cmdUnSubclass |
Height |
372 |
|
cmdUnSubclass |
Left |
120 |
|
cmdUnSubclass |
Top |
600 |
|
cmdUnSubclass |
Width |
1332 |
|
cmdSubclass |
Caption |
“Subclass” |
|
cmdSubclass |
Height |
372 |
|
cmdSubclass |
Left |
120 |
|
cmdSubclass |
Top |
120 |
|
cmdSubclass |
Width |
1332 |
Here is how it will work. The text box is initially blank. When you click the ...
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