하위 창의 인스턴스, SetWindowLong 함수를 호출 하 고 GWL_WNDPROC 플래그와 하위 프로시저에 대 한 포인터 하위 창 핸들을 지정 합니다. SetWindowLong 원래 창 프로시저;에 포인터를 반환합니다. 이 포인터를 사용 하 여 원래 프로시저에 메시지를 전달할 수 있습니다. 하위 창 프로시저 CallWindowProc 함수를 사용 하 여 원래 창 프로시저를 호출 해야 합니다.
다음 예제에서는 어떻게 서브 클래스 편집의 인스턴스 제어 대화 상자에서. 하위 창 프로시저 편집 컨트롤에서 컨트롤에 입력된 포커스가 때마다 enter와 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 (LONG));
/ / / / 초기화 절차를 계속 합니다.
/ / TRUE를 반환 합니다.
WM_DESTROY 사례: / / 서브 클래스 편집 컨트롤에서 제거 합니다.
SetWindowLong (hwndEdit, GWL_WNDPROC, (LONG) 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);
}