Aracılığıyla paylaş


Durum Çubukları (Windows Denetimleri)

durum çubuğu, bir uygulamanın çeşitli türlerdeki durum bilgilerini görüntüleyebildiği bir üst pencerenin alt kısmındaki yatay penceredir. Durum çubuğu, birden fazla bilgi türünü görüntülemek için bölümlere ayrılabilir. Aşağıdaki ekran görüntüsü, Microsoft Windows Paint uygulamasındaki durum çubuğunu gösterir. Bu durumda, durum çubuğu "Yardım için Yardım Menüsünde Yardım Konuları'na tıklayın" metnini içerir. Durum çubuğu, pencerenin alt kısmındaki Yardım metni ve koordinat bilgilerini içeren alandır.

Çevrimiçi yardımekran görüntüsü

Bu bölüm aşağıdaki konuları içerir.

Türler ve Stiller

Durum çubuğunun varsayılan konumu üst pencerenin alt kısmındadır, ancak üst pencerenin istemci alanının en üstünde görünmesi için CCS_TOP stilini belirtebilirsiniz.

Durum çubuğunun sağ ucunda boyutlandırma kavraması eklemek için SBARS_SIZEGRIP stilini belirtebilirsiniz.

Not

Sonuçta elde edilen boyutlandırma kavraması işlevsel olmadığından, CCS_TOP ve SBARS_SIZEGRIP stillerinin birleştirilmesi önerilmez.

 

Boyut ve Yükseklik

Durum çubuğunun pencere yordamı, CreateWindowEx işlevinde belirtilen değerleri yoksayarak pencerenin başlangıç boyutunu ve konumunu otomatik olarak ayarlar. Genişlik, üst pencerenin istemci alanıyla aynıdır. Yükseklik, durum çubuğunun cihaz bağlamında seçili olan yazı tipinin ölçümlerine ve pencerenin kenarlıklarının genişliğine bağlıdır.

Pencere yordamı, bir WM_SIZE iletisi aldığında durum çubuğunun boyutunu otomatik olarak ayarlar. Genellikle, üst pencerenin boyutu değiştiğinde, üst öğe durum çubuğuna bir WM_SIZE iletisi gönderir.

Bir uygulama, pencereye piksel cinsinden en düşük yüksekliği belirterek SB_SETMINHEIGHT iletisi göndererek durum çubuğunun çizim alanının en düşük yüksekliğini ayarlayabilir. Çizim alanı pencerenin kenarlıklarını içermez. En düşük yükseklik, sahip tarafından çizilmiş durum çubuğunda çizim için kullanışlıdır. Daha fazla bilgi için bu bölümün devamında Owner-Drawn Durum Çubukları bakın.

Pencereye bir SB_GETBORDERS iletisi göndererek durum çubuğunun kenarlıklarının genişliklerini alırsınız. İleti, genişlikleri alan üç öğeli bir dizinin adresini içerir.

Multiple-Part Durum Çubukları

Durum çubuğu, her biri farklı bir metin satırı görüntüleyen birçok farklı bölüme sahip olabilir. Pencereye bir SB_SETPARTS iletisi göndererek, oluşturulacak parça sayısını ve bir tamsayı dizisinin adresini belirterek durum çubuğunu bölümlere ayırırsınız. Dizi, her bölüm için bir öğe içerir ve her öğe bir parçanın sağ kenarının istemci koordinatını belirtir.

Bir durum çubuğu en fazla 256 parçaya sahip olabilir, ancak uygulamalar genellikle bundan çok daha az parça kullanır. Pencereye bir SB_GETPARTS iletisi göndererek durum çubuğundaki parçaların sayısını ve her bölümün sağ kenarının koordinatını alırsınız.

Durum Çubuğu Metin İşlemleri

Durum çubuğunun herhangi bir bölümünün metnini, SB_SETTEXT iletisini göndererek, bir bölümün sıfır tabanlı dizinini, bölümde çizilmesi gereken dizenin adresini ve dizeyi çizme tekniğini belirterek ayarlarsınız. Çizim tekniği, metnin kenarlıklı olup olmadığını ve varsa kenarlık stilini belirler. Ayrıca, metni çizmek için üst pencerenin sorumlu olup olmadığını belirler. Daha fazla bilgi için aşağıdaki Owner-Drawn Durum Çubukları bölümüne bakın.

Varsayılan olarak, metin bir durum çubuğunun belirtilen bölümü içinde sola hizalanır. Ortaya veya sağa hizalamak için metne sekme karakterleri (\ t) ekleyebilirsiniz. Tek bir sekme karakterinin sağındaki metin ortalanır ve ikinci sekme karakterinin sağındaki metin sağa hizalanır.

Durum çubuğundan metin almak için SB_GETTEXTLENGTH ve SB_GETTEXT iletilerini kullanın.

Uygulamanız yalnızca bir bölümü olan bir durum çubuğu kullanıyorsa, metin işlemlerini gerçekleştirmek için WM_SETTEXT, WM_GETTEXTve WM_GETTEXTLENGTH iletilerini kullanabilirsiniz. Bu iletiler yalnızca sıfır dizinine sahip olan bölümü ele alır ve durum çubuğunu statik metin denetimi gibi işlemenizi sağlar.

Durum çubuğu oluşturmadan bir durum satırı görüntülemek için DrawStatusTextişlevinikullanın. İşlev, durum çubuğunun pencere yordamıyla durumu çizmek için aynı teknikleri kullanır, ancak durum bilgilerinin boyutunu ve konumunu otomatik olarak ayarlamaz. İşlevi çağırırken, durum bilgilerinin boyutunu ve konumunu ve çizeceğiniz pencerenin cihaz bağlamını belirtmeniz gerekir.

Owner-Drawn Durum Çubukları

Durum çubuğunun tek tek bölümlerini sahip tarafından çizilmiş bölümler olarak tanımlayabilirsiniz. Bu tekniğin kullanılması, pencere bölümünün görünümü üzerinde başka türlü sahip olabileceğiniz denetimden daha fazla denetim sağlar. Örneğin, farklı bir yazı tipi kullanarak metin yerine bit eşlem görüntüleyebilir veya metin çizebilirsiniz.

Bir pencere bölümünü sahip tarafından çizilmiş olarak tanımlamak için, SB_SETTEXT iletisini durum çubuğuna gönderin ve bölümü ve SBT_OWNERDRAW çizim tekniğini belirtin. SBT_OWNERDRAW belirtildiğinde, lParam parametresi, uygulamanın bölümü çizerken kullanabileceği 32 bit uygulama tanımlı bir değerdir. Örneğin, yazı tipi tutamacını, bit eşlem tutamacını, bir dizenin adresini vb. belirtebilirsiniz.

Durum çubuğunun sahip tarafından çizilmiş bir bölüm çizmesi gerektiğinde, WM_DRAWITEM iletisini üst pencereye gönderir. İletinin wParam parametresi durum çubuğunun alt pencere tanımlayıcısı ve lParam parametresi DRAWITEMSTRUCT yapısının adresidir. Üst pencere, bölümü çizmek için yapıdaki bilgileri kullanır. Durum çubuğunun sahip tarafından çizilmiş bir bölümü için DRAWITEMSTRUCT aşağıdaki bilgileri içerir.

Üye Açıklama
CtlType Tanımsız; kullanmayın.
CtlID Durum çubuğunun alt pencere tanımlayıcısı.
itemID Çizilecek parçanın sıfır tabanlı dizini.
itemAction Tanımsız; kullanmayın.
itemState Tanımsız; kullanmayın.
hwndItem Durum çubuğunun tutamacı.
hDC Durum çubuğunun cihaz bağlamı için tanıtıcı.
rcItem Çizilecek pencere bölümünün koordinatları. Koordinatlar, durum çubuğunun sol üst köşesine göre değişir.
itemData SB_SETTEXT iletisinin lParam parametresinde belirtilen uygulama tanımlı 32 bit değer.

 

Basit Mod Durum Çubukları

Bir durum çubuğunu SB_SIMPLE iletisi göndererek "basit moda" koyarsınız. Basit mod durum çubuğunda yalnızca bir bölüm görüntülenir. Pencerenin metni ayarlandığında, pencere geçersiz kılınmış olur, ancak sonraki WM_PAINTkadar yeniden çizilmemiş olur. İletinin beklenmesi, pencerenin yeniden çizilmesi sayısını en aza indirerek ekran titremesini azaltır. Basit mod durum çubuğu, kullanıcı menüde gezinirken menü öğeleri için Yardım metnini görüntülemek için kullanışlıdır.

Bir durum çubuğunun basit moddayken görüntülediği dize, sivilcesiz moddayken görüntülediği dizelerden ayrı tutulur. Bu, pencereyi basit moda koyabileceğiniz, metnini ayarlayabileceğiniz ve sivil toplum modu olmayan metin değiştirilmeden sivildir olmayan moda geri dönebileceğiniz anlamına gelir.

Basit mod durum çubuğunun metnini ayarlarken, SBT_OWNERDRAW dışında herhangi bir çizim tekniği belirtebilirsiniz. Basit mod durum çubuğu sahip çizimlerini desteklemez.

Varsayılan Durum Çubuğu İleti İşleme

Bu bölümde, önceden tanımlanmış STATUSCLASSNAME sınıfı için pencere yordamı tarafından işlenen iletiler açıklanmaktadır.

İleti Varsayılan işleme
WM_CREATE Durum çubuğunu başlatır.
WM_DESTROY Durum çubuğu için ayrılan kaynakları serbesttir.
WM_GETFONT Durum çubuğunun metnini çizdiği geçerli yazı tipi tutamacını döndürür.
WM_GETTEXT Metni durum çubuğunun ilk bölümünden arabelleğe kopyalar. Metnin uzunluğunu ve metni çizmek için kullanılan tekniği karakter cinsinden belirten 32 bitlik bir değer döndürür.
WM_GETTEXTLENGTH Durum çubuğunun ilk bölümündeki metnin uzunluğunu ve metni çizmek için kullanılan tekniği karakter olarak belirten 32 bitlik bir değer döndürür.
WM_NCHITTEST Fare imleci boyutlandırma kavramasındaysa, sistemin boyutlandırma imlecini görüntülemesine neden olan HTBOTTOMRIGHT değerini döndürür. Fare imleci boyutlandırma kavramasında değilse, durum çubuğu bu iletiyi DefWindowProc işlevine geçirir.
WM_PAINT Durum çubuğunun geçersiz bölgesini boyar. wParam parametresiNULLdeğilse, denetim değerin bir HDC olduğunu varsayar ve bu cihaz bağlamını kullanarak boyar.
WM_SETFONT Durum çubuğunun cihaz bağlamında yazı tipi tutamacını seçer.
WM_SETTEXT Varsayılan çizim işlemini (sıfır olarak belirtilir) kullanarak belirtilen metni durum çubuğunun ilk bölümüne kopyalar. Başarılı olursa true döndürür veya false .
WM_SIZE Durum çubuğunu, üst pencerenin istemci alanının geçerli genişliğine ve durum çubuğunun geçerli yazı tipinin yüksekliğine göre yeniden boyutlandırıyor.