Alt pencere

Bir alt pencere WS_CHILD stilini vardır ve onun üst pencere istemci alanı sınırlı. Uygulama genellikle istemci alanı ana pencerenin işlevsel alanlara bölmek için alt pencereleri kullanır. CreateWindowEx işlevinde WS_CHILD stilini belirterek bir alt pencere oluşturma.

Alt pencere bir üst pencere olması gerekir. Ana pencere, örtüşen bir pencere, bir açılır pencereyi veya başka bir alt pencere olabilir. CreateWindowExgörüşme sırasında üst pencere belirtin. CreateWindowEx içinde WS_CHILD stilini belirtin, ancak bir üst pencere belirtmezseniz, sistem pencere oluşturmaz.

Açıkça istenmedikçe alt pencere bir istemci alanı ama hiçbir diğer özellikleri vardır. Uygulama bir başlık çubuğu, bir pencere menüsü istemek, en aza indirmek ve düğmeler, kenarlık ve alt pencere kaydırma çubukları, ancak alt pencere menü olamaz. Uygulama menüsünü tanıtıcı, ya da ne zaman çocuğun pencere sınıfı kaydeder veya alt pencere oluşturur, belirtir menü kolu yoksayılır.

Konumlandırma

Sistem her zaman alt pencere, ana pencerenin istemci alanının sol üst köşesine göre konumlandırır. Alt pencere hiçbir parçası, onun üst pencere kenarlıklarının dışında hiç görünür. Bir uygulama bir alt pencereyi üst pencere büyük ya da bazı veya tüm alt pencereyi üst sınırları uzanır ki alt pencere konumlarını oluşturursa, sistem alt pencere klipler; başka bir deyişle, ana pencerenin istemci alanının dışında kalan bölümü görüntülenmez. Ana pencere etkileyen eylemler de alt pencere aşağıdaki şekilde etkileyebilir.

Ana pencere Alt pencere
Yok Önce üst pencere yok yok.
Gizli Önce üst pencere gizli gizli. Yalnızca üst pencere görünür olduğunda alt pencere görünür.
Taşındı Ana pencerenin istemci alanı ile taşındı. Alt pencereyi taşımadan sonra onun müşteri alan boyama için sorumlu.
Gösterilen Ana pencere görüntülenir sonra gösterilen.

Kırpma

Sistem otomatik olarak bir alt pencereyi ana pencerenin istemci alanı küçük değil. Yani eğer alt pencere aynı konumda herhangi bir çizimde yürüten üst pencere alt pencere üzerinde çizer. Ancak, ana pencere WS_CLIPCHILDREN stil varsa sistem alt pencereyi ana pencerenin istemci alanı küçük. Alt pencere kırpılır, ana pencere üzerinde çizim yapamayacağınız.

Alt pencere diğer alt pencereleri aynı istemci alanında çakışabilir. Bir alt pencereyi paylaşan aynı ana penceresinde bir veya daha fazla alt pencere olarak kardeş penceredenir. Sürece bir alt pencereleri WS_CLIPSIBLINGS stilde kardeş windows birbirlerinin istemci alanında çizebilirsiniz. Alt pencere bu tarzı varsa, alt pencere içinde yatan kardeş penceresi herhangi bir kısmı kırpılır.

WS_CLIPCHILDREN ya da WS_CLIPSIBLINGS tarzı bir pencere vardır, hafif bir performans kaybı oluşur. Böylece bir uygulama alt pencereler gelişigüzel kullanılmamalıdır sistem kaynaklarını, her pencerenin alır. En iyi performans için mantıksal olarak, ana penceresini bölmek için gereken bir uygulama alt pencereleri kullanmak yerine, ana penceresinin pencere yordamı bunu.

Ana pencere ilişkisi

Bir uygulama, varolan bir alt pencereyi ana pencerenin SetParent işlevini çağırarak değiştirebilirsiniz. Bu durumda, sistem alt pencereyi eski üst pencere istemci alanından kaldırır ve yeni ana penceresinin istemci alanına taşır. SetParent bir boş tutamaç belirtiyorsa, masaüstü pencere yeni üst pencere olur. Bu durumda, alt pencere dışında başka bir pencere kenarlıklarının masaüstünde çizilir. GetParent işlevi için bir alt pencerenin üst pencere tanıtıcı alır.

Ana pencerenin alt pencere onun istemci alanının bir bölümünü siler ve alt pencere tüm giriş bu bölgeden alır. Pencere sınıfı için her bir ana pencerenin alt pencereleri aynı olması gerekmez. Bu uygulama bir üst pencere farklı görünür ve farklı görevleri gerçekleştiren çocuk Windows'la doldurabilirsiniz anlamına gelir. Örneğin, bir iletişim kutusu denetimleri, her biri bir alt pencereyi kullanıcıdan farklı türde veri kabul eden birçok türde içerebilir.

Tek bir ana pencerenin alt pencere vardır, ancak bir ebeveyn-ebilmek-si olmak herhangi bir sayıda alt pencereleri. Her alt pencere buna alt pencereleri olabilir. Windows Bu zincirdeki her alt pencereyi özgün ana pencerenin alt pencere denir. Bir uygulamayı belirli bir pencere bir alt pencereyi veya verilen ana pencerenin alt pencere olduğunu keşfetmek için IsChild işlevini kullanır.

EnumChildWindows işlevi bir ana pencerenin alt pencereleri numaralandırır. Sonra EnumChildWindows bir uygulama tanımlı geriçağırım işlevi her alt pencereye ele geçirir. Verilen ana pencerenin alt windows Ayrıca numaralandırılır.

İletileri

Sistem alt pencerenin girdi iletileri doğrudan alt pencereye geçer; iletiler, ana pencereden geçmedi. Alt pencere varsa, EnableWindow işlevi tarafından tek özel durumu devre dışı bırakılır. Bu durumda, sistem için üst pencere alt pencereyi yerine giderdi girdi iletileri iletir. Bu girdi iletileri incelemek ve alt pencereyi etkinleştirmek için ana pencere gerekirse verir.

Alt pencere bir benzersiz tanımlayıcı olabilir. Alt pencere denetimini windows ile çalışırken önemli tanımlayıcılardır. O göndererek bir denetimin etkinliği uygulamaya yönlendirir iletileri. Uygulama, Denetim iletileri yönlendirmek için denetimin alt pencere tanıtıcısı kullanır. Ayrıca, Denetim, onun üst pencereye bildirim iletileri gönderir. Bildirim iletisi, hangi Denetim İletisi gönderilen üst tanımlamak için kullandığı denetimin alt pencere tanımlayıcısı içerir. Uygulama, HMENU'nun CreateWindowEx işlevinin bir menü işleci yerine bir değer için parametreyi alt pencereleri diğer türleri için alt-pencere tanımlayıcısını belirtir.

Index