Bir pencere sınıflara

Alt pencere örneği, SetWindowLong işlevini çağırır ve gwl_wndproc bayrak ve alt yordamı bir işaretçi alt pencere tanıtıcısı belirtin. SetWindowLong , orijinal pencere yordamı için bir işaretçi döndürür; Bu işaretçi iletiler özgün yordama kullan. Alt pencere prosedürü, orijinal pencere yordamı çağırmak için CallWindowProc işlevini kullanmanız gerekir.

Aşağıdaki örnek, nasıl alt sınıfına bir düzen örneği kontrol iletişim kutusunda gösterilir. Alt pencere yordamı düzenleme denetimi, denetimin giriş odağa sahip olduğunda girin ve SEKME tuşları da dahil olmak üzere, tüm klavye almaya olanak sağlar.

Wndproc wpOrigEditProc; 
 
lresult APIENTRY EditBoxProc)
    hwnd hwndDlg, UINT uMsg, wparam wParam, lparam lParam) {hwnd hwndEdit; 
 
    switch(uMsg) {case WM_INITDIALOG: / / düzenleme denetimi için tanıtıcı al. 
            hwndEdit = GetDlgItem (hwndDlg, ID_EDIT); 
 
            / / Düzenle alt kontrol. 
            wpOrigEditProc = (wndproc) SetWindowLong (hwndEdit, gwl_wndproc, (uzun) EditSubclassProc); 
            / / / / Başlatma yordamı devam. 
            / / return true; 
 
        Case wm_destroy: / / alt düzenleme denetimi Kaldır. 
            SetWindowLong (hwndEdit, gwl_wndproc, (uzun) wpOrigEditProc); 
            / / / / Temizleme yordama devam edin. 
            / / break; 
    } return false; 
        UNREFERENCED_PARAMETER(lParam); 
} / / Alt yordamı lresult APIENTRY EditSubclassProc ((İngilizce)
    hwnd hwnd, UINT uMsg, wparam wParam, lparam lParam) {If (uMsg == wm_getdlgcode) dlgc_wantallkeys; return 
 
    CallWindowProc (wpOrigEditProc, hwnd, uMsg, wParam, lParam); return 
} 

 

Index