Subclassed açılan kutular

Sınıflara uygulamanın yolunu kesmek ve işlem iletileri için gönderilen veya pencere yayınlanan sağlayan bir işlemdir. Subclassing kullanarak, bir uygulama kendi işleme belirli iletilerin çoğu ileti işleme pencere sınıf tanımlı yordamı terk ederken yerini alabilir.

İşletim sistemi bir pencere oluşturduğunda, penceresinin yordam adresini içeren bir iç veri yapısı hakkında bilgi kaydeder. Alt sınıfı için bir pencere, bir uygulama bir uygulama tanımlı alt yordamı örneği adresi ile bu yordam adresini değiştirmek için SetClassLong işlevini çağırır. Bundan sonra tüm iletileri penceresine alt yordama gönderilir. Bu yordamı sonra orijinal pencere yordamı işlenmemiş mesaj geçmek için CallWindowProc işlevini kullanır. combobox sınıfının penceresinin yordam tarafından gerçekleştirilen ileti işleme açıklama için bkz: Varsayılan açılan kutusunun davranış.

Açılan kutuyu bir iletişim kutusu dışında olduğunda, uygulama, işleme sekmesi, girin ve bir alt yordam kullanmadıkça anahtarları kaçış olamaz. Basit ya da aşağı açılan kutu Giriş odağı aldığında, hemen onun çocuk düzenleme denetimi odağı ayarlar. Bu nedenle, uygulama alt basit ya da aşağı açılan kutu için klavye girişi yolunu kesmek için düzenleme denetimi gerekir. Bu örneği için bkz: bir açılan kutu sınıflara.

Bir alt yordam işlerse WM_PAINT mesaj kullanmak gerekir boyama için hazırlamak için BeginPaint işlevi. Önce arama EndPaint işlevi geçirmeden aygıt-içerik (dc) işleci pencere yordamı wParam parametre olarak. EndPaint ilk olarak adlandırılır, çünkü tüm pencereyi EndPaint doğrulayan hiçbir resim sınıfı pencere yordamı yok.

Sınıflara için ilgili bir superclassingtekniğidir. Onun pencere yordamı işlenmemiş iletileri işlemek için DefWindowProc çağrısı değil dışında bir sınıfın başka bir sınıfı benzer. Bunun yerine, ana pencere sınıfı pencere yordamına işlenmemiş ileti geçirir. Sınıflara ve superclassing, ortaya çıkabilecek sorunları önlemek için Pencere prosedürleri konusundaki yönergeleri izleyin.

Index