Aracılığıyla paylaş


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

Dört tür statik denetim vardır. Her türün bir veya daha fazla Statik Denetim Stilivardır.

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.