Pentru subclasa o instanță a unei ferestre, apela funcția SetWindowLong și specificați ghidajul în fereastra subclasă GWL_WNDPROC de pavilion și un indicator spre procedura subclasă. SetWindowLong întoarce un pointer la regimul fereastra inițială; Utilizați acest indicator pentru a trece mesaje la regimul original. Subclasa fereastra procedura trebuie să utilizați funcția CallWindowProc pentru a apela procedura fereastra original.
Următorul exemplu arată cum să subclasă un exemplu de o editare controlul din caseta de dialog. Procedura subclasă fereastra permite controlul Editare pentru a primi toate tastatură de intrare, inclusiv tastele enter și fila, ori de câte ori control deține focalizarea intrare.
WNDPROC wpOrigEditProc;
(EditBoxProc) LRESULT APIENTRY
HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {HWND hwndEdit;
Switch(uMsg) {caz WM_INITDIALOG: / / regăsi ghidajul comanda editare.
hwndEdit = GetDlgItem (hwndDlg, ID_EDIT);
/ / Subclasă editare de control.
wpOrigEditProc = SetWindowLong (WNDPROC) (hwndEdit, GWL_WNDPROC, EditSubclassProc (lung));
/ / / / Continue procedura de initializare.
/ / întoarce TRUE;
caz WM_DESTROY: / / elimina subclasă din comanda editare.
SetWindowLong (hwndEdit, GWL_WNDPROC, wpOrigEditProc (lung));
/ / / / Continue procedura de curățire.
/ / pauză;
} return FALSE;
UNREFERENCED_PARAMETER(lParam);
} / / Subclasă procedura LRESULT APIENTRY EditSubclassProc (
HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {dacă (uMsg == WM_GETDLGCODE) return DLGC_WANTALLKEYS;
return CallWindowProc (wpOrigEditProc, hwnd, uMsg, wParam, lParam);
}