Instacji okna

Podklasa wystąpienie okna wywołania funkcji SetWindowLong i określić dojście do okna do podklasy, Flaga GWL_WNDPROC i wskaźnik do procedury podklasy. SetWindowLong Zwraca wskaźnik do oryginalnej procedury okna; Użyj tego wskaźnika do przekazywania wiadomości oryginalnej procedury. Procedura okno podklasy musi użyć funkcji CallWindowProc do wywołania procedury okna oryginalnego.

Poniższy przykład pokazuje, jak do podklasy wystąpienie edycji kontroli w oknie dialogowym. Procedura okno podklasy umożliwia formant edycji otrzymać wszystkie klawiatury wejściowe, włączając klawisze enter i kartę, gdy formant ma fokus.

WNDPROC wpOrigEditProc; 
 
(EditBoxProc) LRESULT APIENTRY
    HWND hwndDlg, UINT uMsg, WPARAM wParam, FIKCYJNYMI fikcyjnymi) {HWND hwndEdit; 
 
    Switch(uMsg) {Sprawa WM_INITDIALOG: / / pobrać dojścia do formantu edycyjnego. 
            hwndEdit = GetDlgItem (hwndDlg, ID_EDIT); 
 
            / / Kontroli Edycja podklasy. 
            wpOrigEditProc = SetWindowLong (WNDPROC) (hwndEdit, GWL_WNDPROC, EditSubclassProc (DŁUGA)); 
            / / / / Nadal inicjowania. 
            / / zwróci TRUE; 
 
        Sprawa WM_DESTROY: / / Usuń podklasy z formantu edycyjnego. 
            SetWindowLong (hwndEdit, GWL_WNDPROC, wpOrigEditProc (DŁUGA)); 
            / / / / Nadal procedury oczyszczania. 
            / / podziału; 
    } Zwraca FALSE; 
        UNREFERENCED_PARAMETER(lParam); 
} / / Podklasy procedury LRESULT APIENTRY EditSubclassProc (
    HWND hwnd, UINT uMsg, WPARAM wParam, FIKCYJNYMI fikcyjnymi) {Jeżeli (uMsg == WM_GETDLGCODE) zwraca DLGC_WANTALLKEYS; 
 
    Zwraca CallWindowProc (wpOrigEditProc, hwnd, uMsg, wParam, fikcyjnymi); 
} 

 

Index