До підкласу зразок вікна SetWindowLong функцію і вказати дескриптор вікна до підкласу GWL_WNDPROC прапор і вказівник до підкласу процедури. SetWindowLong повертає вказівник до початкового вікна процедури; Використовуйте вказівник передати повідомлення до початкового порядку. Процедура вікно підкласу повинні функція CallWindowProc для проведення переговорів з оригінального вікна.
Наведений нижче приклад показує, як до підкласу екземпляр правки керування в діалоговому вікні. Підкласу вікно процедура дозволяє редагувати елемент керування отримувати всі клавіатури, у тому числі на ввід та клавіші tab, коли елемент керування має фокус вводу.
WNDPROC wpOrigEditProc;
LRESULT APIENTRY EditBoxProc (
HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {HWND hwndEdit;
Switch(uMsg) {випадку WM_INITDIALOG: / / отримати маркер, щоб змінити елемент керування.
hwndEdit = GetDlgItem (hwndDlg, ID_EDIT);
/ / Підкласу Правка контролювати.
wpOrigEditProc = (WNDPROC) SetWindowLong (hwndEdit, GWL_WNDPROC, EditSubclassProc (ДОВГИЙ));
/ / / / Продовжити процес ініціалізації.
/ / повернути TRUE;
справа WM_DESTROY: / / видалити з підкласу від редагувати елемент керування.
SetWindowLong (hwndEdit, GWL_WNDPROC, wpOrigEditProc (ДОВГИЙ));
/ / / / Продовжити процес очищення.
/ / Перерва;
} Повертає FALSE;
UNREFERENCED_PARAMETER(lParam);
} / / Підкласу процедури (LRESULT APIENTRY EditSubclassProc
HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {Якщо (uMsg = = WM_GETDLGCODE) повернутися DLGC_WANTALLKEYS;
повернення CallWindowProc (wpOrigEditProc, hwnd, uMsg, wParam, lParam);
}