Aracılığıyla paylaş


İstemci Olmayan Alan

Başlık çubuğu, menü çubuğu veya pencere çerçevesi gibi pencerenin istemci olmayan alanının bir bölümünün güncelleştirilmesi gerektiğinde sistem pencereye bir WM_NCPAINT iletisi gönderir. Sistem, istemci alanının bir bölümünü güncelleştirmek üzere bir pencereyi yönlendirmek için başka iletiler de gönderebilir; örneğin, bir pencere etkin veya etkin olmadığında başlık çubuğunu güncelleştirmek için WM_NCACTIVATE iletisini gönderir. Genel olarak, uygulamanın pencere için istemci olmayan alanın tüm gerekli bölümlerini çizebilmesi gerektiğinden, standart pencereler için bu iletilerin işlenmesi önerilmez. Bu nedenle çoğu uygulama bu iletileri varsayılan işleme için DefWindowProc iletir.

Pencereleri için özel istemci olmayan alanlar oluşturan bir uygulamanın bu iletileri işlemesi gerekir. Bunu yaparken, uygulamanın pencerede çizim yapmak için bir pencere cihazı bağlamı kullanması gerekir. penceresi cihaz bağlamı, uygulamanın pencerenin tüm bölümlerine (istemci olmayan alan da dahil) çizmesine olanak tanır. Uygulama, GetWindowDCveya GetDCExişlevinikullanarak bir pencere cihazı bağlamı alır ve çizim tamamlandığında ReleaseDC işlevini kullanarak pencere cihazı bağlamını serbest bırakması gerekir.

Sistem, istemci olmayan alan için bir güncelleştirme bölgesi tutar. Bir uygulama WM_NCPAINT iletisi aldığında, wParam parametresi, güncelleştirme bölgesinin boyutlarını tanımlayan bir bölgenin tanıtıcısını içerir. Uygulama, pencere cihazı bağlamı için güncelleştirme bölgesini kırpma bölgesiyle birleştirmek için tutamacı kullanabilir. Uygulama GetDCEx kullanmadığı ve hem bölge tanıtıcısını hem de DCX_INTERSECTRGN bayrağını belirtmediği sürece sistem, pencere cihazı bağlamını alırken güncelleştirme bölgesini otomatik olarak birleştirmez. Uygulama güncelleştirme bölgesini birleştirmezse, yalnızca pencerenin dışına genişletebilecek çizim işlemleri kırpılır. Uygulama, bölgeyi kullanıp kullanmadığına bakılmaksızın güncelleştirme bölgesini temizlemekle sorumlu değildir.

Bir uygulama WM_NCACTIVATE iletisini işlerse, işlemden sonra sistemin etkin pencere değişikliğini tamamlaması için TRUE döndürmesi gerekir. Uygulama WM_NCACTIVATE iletisini aldığında pencere simge durumuna küçültülmüşse, iletiyi DefWindowProciletmelidir. Böyle durumlarda, varsayılan işlev simgenin etiketini yeniden çizer.