Bir pencere yordam tasarımı

Aşağıdaki örnek bir tipik pencere yordamı yapısını gösterir. Pencere yordamı ileti değişkenine geçiş açıklamada ayrı durumda deyimleri tarafından işlenen bireysel iletileri kullanır. Her durumda, her ileti için belirli bir değer döndürür dikkat edin. O değil işlem iletileri için pencere yordamı DefWindowProc işlevini çağırır.

Lresult geri MainWndProc)
    hwnd hwnd, / / idare pencereye
    UINT uMsg, / / ileti tanımlayıcısı
    wparam wParam, / / ilk mesajı parametresi
    lparam lParam) / / saniye iletisi parametresi
{switch (uMsg) {wm_create durumda: / / pencere başlatılamıyor. 
            return 0; 
 
        durumda WM_PAINT: / / pencerenin istemci alanı boyayın. 
            return 0; 
 
        Case WM_SIZE: / / pencere konumu ve boyutu ayarla. 
            return 0; 
 
        Case wm_destroy: / pencere özgü veri nesneleri kadar temiz. 
            return 0; 
 
        / / / / Diğer iletileri işleyecek. 
        / / Varsayılan: DefWindowProc (hwnd, uMsg, wParam, lParam); return 
    } return 0; 
} 

 

Sadece pencere oluşturulduktan sonra ama yanlış CreateWindowEx işlevi başarısız döndürerek bir uygulama bu iletiye yanıt verirse gönderilen wm_nccreate messageis. Pencerenizin zaten oluşturulduktan sonra wm_create ileti gönderilir.

Ne zaman pencere hakkında bozdu wm_destroy ileti gönderilir. DestroyWindow işlevi yok yok olma pencerenin herhangi bir alt pencereleri ilgilenir. Önce sadece bir pencere yok wm_ncdestroy mesaj gönderilir.

En azından bir pencere yordamı işlemek WM_PAINT mesaj kendisine çekmek için. Genellikle, fare ve klavye iletileri de işlemesi gerekir. Pencere yordamınız onları işlemeyeceğini belirlemek için bireysel iletilerinin açıklamaları inceleyin.

Uygulama bir ileti işleme bir parçası olarak DefWindowProc işlevini çağırabilirsiniz. Böyle bir durumda, uygulama DefWindowProciçin ileti geçirmeden önce ileti parametrelerinin değiştirebilir veya varsayılan kendi işlemlerini gerçekleştirdikten sonra işleme devam.

Bir iletişim kutusu yordam WM_INITDIALOG mesaj wm_create mesaj yerine alır ve işlenmemiş ileti DefDlgProc işlevine geçmez. Aksi takdirde, bir iletişim kutusu yordam bir pencere yordam aynıdır.

Index