Kalle funksjonen SetWindowLong underklasse en forekomst av et vindu, og angi håndtaket til vinduet å underklasse flagget GWL_WNDPROC og en peker til prosedyren underklasse. SetWindowLong returnerer en peker til den opprinnelige vindusprosedyre; Bruk denne pekeren til å sende meldinger til den opprinnelige prosedyren. Vindusprosedyre underklasse må bruke CallWindowProc -funksjonen til å kalle den opprinnelige vindusprosedyre.
Eksemplet nedenfor viser hvordan til underklasse en forekomst av en Rediger kontroll i en dialogboks. Vindusprosedyre underklasse aktiverer redigeringskontrollen å motta alle tastatur input, inkludert enter og tab-tasten, når kontrollen har fokus inndata.
WNDPROC wpOrigEditProc;
EditBoxProc () ikke hente LRESULT APIENTRY
HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {HWND hwndEdit;
Switch(uMsg) {case WM_INITDIALOG: / / hente referansen til edit-kontrollen.
hwndEdit = GetDlgItem (hwndDlg, ID_EDIT);
/ / Underklasse Rediger kontroll.
wpOrigEditProc = (WNDPROC), SetWindowLong (hwndEdit, GWL_WNDPROC, (lang) EditSubclassProc);
/ / / / Fortsette initialiseringsprosedyren.
/ / return TRUE;
Case WM_DESTROY: / / Fjern underklassen fra redigeringskontrollen.
SetWindowLong (hwndEdit, GWL_WNDPROC, (lang) wpOrigEditProc);
/ / / / Fortsette prosedyren opprydding.
/ / break;
} return FALSE;
UNREFERENCED_PARAMETER(lParam);
} / / Underklasse prosedyren ikke hente LRESULT APIENTRY EditSubclassProc ()
HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {hvis (uMsg == WM_GETDLGCODE) return DLGC_WANTALLKEYS;
gå tilbake til CallWindowProc (wpOrigEditProc, hwnd, uMsg, wParam, lParam);
}