Statik Denetimler Hakkında
Uygulamalar genellikle diğer denetimleri etiketlemek veya bir denetim grubunu ayırmak için statik denetimler kullanır. Statik denetimler alt pencere olsalar da seçilemezler. Bu nedenle, klavye odağını alamazlar ve klavye arabirimine sahip olamazlar. SS_NOTIFY stiline sahip bir statik denetim, kullanıcı denetime tıkladığında veya çift tıkladığında üst pencereye bildirimde bulunarak fare girişi alır. Statik denetimler STATIC pencere sınıfına aittir.
Statik denetimler çakışan, açılan ve alt pencerelerde kullanılabilse de, sistemin davranışlarını standartlaştırdığı iletişim kutularında kullanılmak üzere tasarlanmıştır. Bir geliştirici, iletişim kutularının dışındaki statik denetimleri kullanarak uygulamanın standart olmayan şekilde davranma riskini artırır. Genellikle, bir geliştirici iletişim kutularında statik denetimler kullanır veya özelleştirilmiş statik denetimler oluşturmak için SS_OWNERDRAW stilini kullanır.
Bu bölümde aşağıdaki konular ele alınıyor.
-
Statik Denetim Türleri
- Basit Grafik Statik Kontrolü
- Metin Statik Denetimi
- Görüntü Statik Denetimi
- Statik Denetim Owner-Drawn
- Statik Denetim Varsayılan İleti İşleme
Statik Denetim Türleri
Dört tür statik denetim vardır. Her türün bir veya daha fazla Statik Denetim Stilivardır.
- Basit Grafik Statik Kontrol
- Metin Statik Denetimi
- Görüntü Statik Denetimi
- Statik Denetim Owner-Drawn
Basit Statik Grafik Kontrolü
Basit bir grafik statik denetimi bir çerçeve veya dolu bir dikdörtgen görüntüler. Çerçeve, siyah, gri veya beyaz dahil olmak üzere çeşitli stillerde çizilebilir. Buna ek olarak, üç boyutlu bir görünüm vermek için bir çerçeve kazınmış bir stil ile çizilebilir. Çerçeve stilleri SS_BLACKFRAME, SS_GRAYFRAME, SS_WHITEFRAME, SS_ETCHEDHORZ, SS_ETCHEDVERT ve SS_ETCHEDFRAME içerir.
Dikdörtgen üç stilden birinde renkle doldurulabilir: siyah, gri veya beyaz. Bu stiller SS_BLACKRECT, SS_GRAYRECT ve SS_WHITERECT sabitleri tarafından tanımlanır.
Grafik stilleri birleştirilemez.
Metin Statik Denetimi
Metin statik denetimi metni beş stilden birinde dikdörtgen olarak görüntüler:
- sözcük kaydırma olmadan sola hizalanmış
- sözcük kaydırma özellikli sola hizalanmış
- Merkezli
- sağa hizalı
- basit
Bu stiller sırasıyla SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT ve SS_SIMPLE sabitleri tarafından tanımlanır. Sistem, bu denetimlerdeki metni, yeniden düzenlenmeyen "basit" metinler dışında önceden tanımlanmış yollarla yeniden düzenler.
Uygulama, SetWindowText işlevini veya WM_SETTEXT iletisini kullanarak metin statik denetimindeki metni istediği zaman değiştirebilir.
Sistem, statik kontrol içinde olabildiğince çok metin görüntüler ve sığmayan kısımları keser. Denetim için uygun bir boyut hesaplamak için, metnin yazı tipi ölçümlerini alın. Yazı tipleri ve yazı tipi ölçümleri hakkında daha fazla bilgi için bkz. Yazı Tipleri ve Metin.
Varsayılan olarak, diğer denetimlerde olduğu gibi, bir statik denetim için pencere metni, denetimin kısayol tuşu olarak sonraki karakteri tanımlayan bir "&" işareti içerebilir (veya çoğu statik denetim söz konusu olduğunda, etiketlediği ve sekme sırasına göre gelen bir sonraki denetim için). Metinde kısayolları tanımlamak için kullanmak yerine ve işareti görüntülemek istiyorsanız, SS_NOPREFIX stilini ekleyin.
Görüntü Statik Denetimi
Görüntü statik denetimi bit eşlemleri, simgeleri (animasyonlu simgeler dahil) veya gelişmiş meta dosyaları görüntüleyebilir. Belirli bir statik denetimin görüntülediği grafik türü denetimin stiline bağlıdır: SS_BITMAP, SS_ICON veya SS_ENHMETAFILE. Uygulama, denetimi oluştururken stili belirtir ve ayrıca denetimin görüntüleneceği bit eşlem, simge veya meta dosyası için bir tanıtıcı belirtir. Denetim oluşturulduktan sonra uygulama, yeni grafik nesnesine tanıtıcı belirterek STM_SETIMAGE bir ileti göndererek farklı bir grafiği denetimle ilişkilendirebilir. Bir uygulama, statik kontrolle şu anda ilişkilendirilmiş olan grafik nesnesinin tanıtıcısını, ona bir STM_GETIMAGE mesajı göndererek alabilir. Uygulama, SendDlgItemMessage işlevini kullanarak statik denetime ileti gönderir.
Owner-Drawn Statik Denetimi
Bir uygulama, SS_OWNERDRAW stilini kullanarak statik denetimi boyama sorumluluğunu üstlenebilir. Sahibi tarafından çizilen statik denetimin ebeveyn penceresi, statik denetimin boyanması gerektiğinde bir WM_DRAWITEM iletisi alır. İleti, sahip penceresinin denetimi çizerken kullandığı bilgileri içeren bir DRAWITEMSTRUCT yapısına yönelik bir işaretçi içerir.
Statik Kontrol Varsayılan Mesaj İşleme
Önceden tanımlanmış statik denetim penceresi sınıfının pencere yordamı, statik denetim yordamının işlemediği tüm iletiler için varsayılan işleme gerçekleştirir. Statik denetim herhangi bir ileti için FALSE döndürdüğünde, önceden tanımlanmış pencere yordamı iletileri denetler ve aşağıdaki tabloda açıklanan varsayılan eylemi gerçekleştirir. Tabloda, SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT veya SS_SIMPLE stiline sahip bir metin statik kontrolü, statik bir kontrol türüdür.
İleti | Varsayılan eylem |
---|---|
WM_CREATE | Grafik nesnesini yükler ve grafik statik denetimleri için pencereyi nesnenin boyutuna göre boyutlandırır. Diğer statik denetimler için hiçbir işlem gerçekleştirmez. |
WM_DESTROY | Grafik statik denetimleri için herhangi bir grafik nesnesini serbest ve yok eder. Diğer statik denetimler için hiçbir işlem gerçekleştirmez. |
WM_ENABLE | Görünür statik denetimleri yeniden boyar. |
WM_ERASEBKGND | TRUEdöndürür, denetimin arka planı sildiğini gösterir. |
WM_GETDLGCODE | DLGC_STATIC'i döndürür. |
WM_GETFONT | Statik metin denetimleri için yazı tipine bir tanıtıcı döndürür. |
WM_GETTEXT | Kopyalanan karakter sayısını döndürür. |
WM_GETTEXTLENGTH | Metin statik denetimi için metnin uzunluğunu karakter cinsinden döndürür. |
WM_LBUTTONDBLCLK | Denetim stili SS_NOTIFY ise üst pencereye bir STN_DBLCLK bildirim kodu gönderir. |
WM_LBUTTONDOWN | Denetim stili SS_NOTIFY ise üst pencereye bir STN_CLICKED bildirim kodu gönderir. |
WM_NCLBUTTONDBLCLK | Kontrol stili SS_NOTIFY ise, üst pencereye bir STN_DBLCLK bildirim kodu gönderir. |
WM_NCLBUTTONDOWN | Denetim stili SS_NOTIFY ise üst pencereye bir STN_CLICKED bildirim kodu gönderir. |
WM_NCHITTEST | Denetim stili SS_NOTIFY ise HTCLIENT döndürür; aksi takdirde, HTTRANSPARENT döndürür. |
WM_PAINT | Kontrolü yeniden boyar. |
WM_SETFONT | Statik metin denetimleri için yazı tipini ayarlar ve yeniden çizer. |
WM_SETTEXT | Metin statik denetimleri için metni ayarlar ve yeniden boyar. |
Önceden tanımlanmış pencere yordamı, varsayılan işleme için diğer tüm iletileri DefWindowProc geçirir.