Aracılığıyla paylaş


TN031: Denetim çubuğu

[!NOT]

İlk çevrimiçi belgelerinde yer almıştır beri aşağıdaki teknik Not güncelleştirilmedi.Sonuç olarak bazı yordamlar ve konuları eski veya yanlış.En son bilgiler için çevrimiçi belgelere dizini ilgilendiğiniz konu aramak önerilir.

Bu not mfc denetim çubuğu sınıfları açıklar: Genel CControlBar, CStatusBar, CToolBar, CDialogBar, ve CDockBar.

CControlBar

A ControlBar olan bir CWnd-türetilmiş, sınıf:

  • Üst ya da alt çerçeve penceresi hizalanır.

  • Ya da hwnd tabanlı denetimler alt öğeler içerebilir (örneğin, CDialogBar) veya olmayan-HWND temel öğeleri (örneğin, CToolBar, CStatusBar).

Denetim çubuklarından ek stillerini destekler:

  • CBRS_TOP(Varsayılan) denetim çubuğunun üstüne pin.

  • CBRS_BOTTOMPIN denetim çubuğunun altına.

  • CBRS_NOALIGNÜst boyutlandırdığında denetim çubuğunun konumunu değil.

Türetilmiş sınıfları CControlBar daha ilginç uygulamaları sağlar:

  • CStatusBarDurum çubuğu, durum çubuğu bölmeleri metni içeren maddelerdir.

  • CToolBarBit eşlem düğmeler bir satırda hizalanmış bir araç öğelerdir.

  • CDialogBarStandart windows içeren araç çubuğu gibi çerçeve denetimleri (iletişim şablon kaynaktan oluşturulur).

  • CDockBar bir diğeri için sabitleme alanına Genelleştirilmiş CControlBar türetilen nesneler.Belirli bir üye işlevleri ve değişkenleri bu sınıfta kullanılabilen gelecekteki sürümlerde değiştirmek yüksektir.

Tüm denetim çubuğu nesneleri/windows bazı üst çerçeve penceresinin alt pencereler olacaktır.Bunlar genellikle kardeş (örneğin, bir MDI istemcisi veya Görünüm) çerçevesi istemci alanına eklenir.Denetim çubuğunun alt pencere Teşhis önemlidir.Denetim çubuğunun varsayılan düzenini yalnızca aralığında kontrol çubukları kimlikleri ile çalışır AFX_IDW_CONTROLBAR_FIRST için AFX_IDW_CONTROLBAR_LAST.256 Denetim aralığı olsa unutmayın doğrudan Baskı Önizleme mimarisi tarafından desteklenen bu yana kimlikleri bu denetim çubuğunun ilk 32 kimlikleri özel.

CControlBar Standart bir uygulama sınıfı sağlar:

  • Denetim çubuğunun üst, alt veya her iki tarafına Çerçeve hizalama.

  • Denetim madde diziler ayrılıyor.

  • Türetilmiş Sınıflar uygulaması destekleme.

C++ denetim çubuğu genellikle katıştırılmış nesneler üyeleri olarak bir CFrameWnd türetilmiş sınıf ve ne kadar Temizlenen ana HWND ve nesne kaybolur.Denetim çubuğu nesnesinde öbek tahsis etmeniz, basitçe ayarlayabilirsiniz m_bAutoDestruct üye doğru denetim çubuğu yapma "silin", HWND yok edilir.

[!NOT]

Kendi oluşturursanız, CControlBar-MFC's birini kullanarak, gibi türetilmiş sınıfları yerine türetilmiş sınıf, CStatusBar, CToolBar, veya CDialogBar, ayarlamanız gerekir m_dwStyle veri üyesi.Bu geçersiz kılma yapılabilir Create:

// CMyControlBar is derived from CControlBar
BOOL CMyControlBar::Create( CWnd* pParentWnd, DWORD dwStyle, UINT nID )
{
   m_dwStyle = dwStyle;

   .
   .
   .
}

Denetim çubuğu düzeni algoritması

Denetim çubuğu düzeni algoritması çok basittir.Çerçeve penceresi bir ileti gönderir WM_SIZEPARENT denetim çubuğu aralıktaki tüm çocuklar için.Bu ileti ile birlikte üst istemci dikdörtgen bir işaretçi geçirilir.Bu ileti, z-sırası, çocuklar için gönderilir.Denetim çubuğunda çocuklar, kendilerini konumlandırmak ve Ebeveynler istemci alanının boyutunu azaltmak için bu bilgileri kullanın.Normal istemci alanı (daha az Denetim çubuklarından) sol son dikdörtgen ana istemci penceresi (genellikle bir MDI istemcisi, görünüm veya bölücü pencere) yerleştirmek için kullanılır.

Bkz: CWnd::RepositionBars ve CFrameWnd::RecalcLayout daha fazla ayrıntı için.

Dahil mfc özel Windows iletilerini WM_SIZEPARENT, belgelenen Teknik Not 24.

CStatusBar

Durum çubuğu satır metin çıkış bölmeleri olan denetim bir çubuktur.Metin çıkış bölmeleri iki yaygın kullanım yöntemleri şunlardır:

  • İleti satır olarak

    (örneğin, standart menüsünden Yardım iletisi satırı).Bunlar genellikle bir 0 tabanlı tarafından dizine erişim

  • Durum göstergeleri

    (örneğin, harf, sayı ve scrl göstergeler).Bunlar genellikle dize/komut kimliği ile erişilir

Durum çubuğu (Windows arabirimi uygulama tasarım kılavuzu veya 10 punto İsviçre orantılı bir yazı tipi, yazı tipi mappers en iyi eşleşen tarafından belirlenir) 10 puntoluk ms Sans Serif tipidir.Bazı Windows sürümlerinde, Japonca sürüm gibi seçili yazı tipleri farklı.

Durum çubuğunda kullanılan renkleri de Windows arabirimi uygulama Tasarım Kılavuzu önerisi ile tutarlıdır.Bu renkleri değil sabit kodlanmıştır ve yanıt olarak Denetim Masası'ndaki kullanıcı özelleştirme dinamik olarak değiştirildi.

Öğe

Windows renk değeri

Varsayılan rgb

Durum çubuğu arka planı

COLOR_BTNFACE

RGB (192, 192, 192)

Durum çubuğu metni

COLOR_BTNTEXT

RGB (000, 000, 000)

Durum çubuğu sol üst kenarlar

COLOR_BTNHIGHLIGHT

RGB (255, 255, 255)

Durum çubuğu bot/sağ kenarlar

COLOR_BTNSHADOW

RGB (128, 128, 128)

CStatusBar CCmdUI desteği

Göstergeler genellikle güncelleştirilmiş üzerinden yoludur ON_UPDATE_COMMAND_UI mekanizması.Boşta kalma süresi, durum çubuğunda çağıracak ON_UPDATE_COMMAND_UI işleyicisi göstergesi bölmesinin dize kimliği ile.

ON_UPDATE_COMMAND_UI İşleyicisi çağırabilir:

  • Etkinleştirme: bölmesi devre dışı bırakılır.Devre dışı bırakılmış bir bölme tam olarak etkin bir bölme gibi görünüyor, ancak metin görünmez (diğer bir deyişle metin göstergesi dönüşür).

  • SetText: metni değiştirmek için.Değil otomatik olarak bölmesi çünkü bu kullanıyorsanız dikkatli olun.

Sınıfını ifade CStatusBar , Sınıf kitaplığı başvuru hakkında ayrıntılı bilgi için CStatusBar oluşturma ve özelleştirme API.Çoğu durum çubukları özelleştirmesini, durum çubuğunda başlangıçta görünür yapılmadan önce yapılmalıdır.

Durum çubuğu yalnızca bir stretchy bölmesi, genellikle ilk destekler.O bölmeyi gerçekten en küçük boyut boyutudur.Durum çubuğundaki bölmeler en küçük boyuttan daha büyük ise, herhangi bir ekstra genişlik stretchy bölmesi sunulur.İlk bölmesini stretchy olduğundan durum çubuğunda varsayılan uygulamayla sağa hizalı göstergeleri harf, sayı ve scrl sahiptir.

CToolBar

Satır ayırıcı içeren bit eşlem düğmelerini içeren denetim çubuğunun bir araç çubuğudur.İki düğme stillerini desteklenir: pushbuttons ve onay kutusunu düğmeleri.Radyo grubu işlevi onay kutusunu düğmeleriyle yerleşik ve ON_UPDATE_COMMAND_UI.

Tüm bit eşlem düğmeler araç çubuğunda bir bitmap'ten alınır.Bu bit eşlemi, bir resim veya her düğme için glif içermelidir.Genellikle bitmap görüntüleri/Glifler aynı sırada ekranda çizileceği sırasıdır.(Bu özelleştirme API kullanılarak değiştirilebilir.)

Her düğme aynı boyutta olması gerekir.Standart 24 x 22 piksel varsayılandır.Her görüntü/glif aynı boyutta olmalı ve yan yana olması gerekir, bit eşlem.Varsayılan görüntü/simge boyutu 16 x 15 pikseldir.Bu nedenle, 10 düğmeleri (standart boyutları kullanarak) bir araç için 160 piksel genişliğinde ve 15 piksel yüksekliğinde bir bitmap gerekir.

Her düğme, yalnızca bir görüntü/glif vardır.Farklı düğme durumları ve stiller (aşağı, örneğin, basılı devre dışı, aşağı, belirsiz devre dışı) tek bir görüntü/glif algorithmically üretilir.Herhangi bir renkli bit eşlem veya DIB teorik olarak kullanılabilir.Orijinal görüntüyü gri tonlama ise farklı düğme oluşturma algoritması works en iyi şekilde belirtmektedir.Standart araç çubuğu düğmeleri ve araç çubuğu düğmesini clipart sağlanan mfc genel örnek bakın küçük örnekler.

Araç çubuğunda kullanılan renkleri Windows arabirimi uygulama Tasarım Kılavuzu önerisi ile tutarlı.Bu renkleri değil sabit kodlanmıştır ve yanıt olarak Denetim Masası'ndaki kullanıcı özelleştirme dinamik olarak değiştirildi.

Öğe

Windows renk değeri

Varsayılan rgb

Araç çubuğu arka planı

COLOR_BTNFACE

RGB(192,192,192)

Sol üst kenarları araç çubuğu düğmeleri

COLOR_BTNHIGHLIGHT

RGB(255,255,255)

Bot/sağ kenarları araç çubuğu düğmeleri

COLOR_BTNSHADOW

RGB(128,128,128)

Buna ek olarak, standart Windows button denetimleri gibi davranarak bit eşlem düğmeler yeniden renklendirilmiş.Bu renklendirme işlemini, bitmap kaynak ve yanıt yanıt olarak Denetim Masası'ndaki kullanıcı özelleştirme sistem renk değişikliği olarak yüklendiğinde oluşur.Dikkatli kullanılması gereken şekilde araç bitmap aşağıdaki renkleri otomatik olarak renklendirilen.Renklendirilen bit bölümünü olmasını istemiyorsanız, daha sonra yapılan tahmini olarak yakından eşleşen rgb değerlerinden birini gösteren bir renk kullanın.Eşleme tam rgb değerlerine göre yapılır.

rgb değeri

Dinamik olarak eşlenen renk değeri

RGB (000, 000, 000)

COLOR_BTNTEXT

RGB (128, 128, 128)

COLOR_BTNSHADOW

RGB (192, 192, 192)

COLOR_BTNFACE

RGB (255, 255, 255)

COLOR_BTNHIGHLIGHT

Sınıfını ifade CToolBarSınıf kitaplığı başvuru hakkında ayrıntılı bilgi için CToolBar oluşturma ve özelleştirme API.Çoğu araç çubukları özelleştirmesini araç başlangıçta görünür yapılmadan önce yapılmalıdır.

API, kimlikleri, stiller, düğme ayarlamak için kullanılabilir özelleştirme ayırıcı genişlik ve hangi görüntü/glif hangi düğme için kullanılır.Varsayılan olarak, bu API'leri kullanan gerek yoktur.

CToolBar CCmdUI desteği

Araç çubuğu düğmeleri her zaman güncel üzerinden yoludur ON_UPDATE_COMMAND_UI mekanizması.Boşta kalma süresi üzerinde araç çağıracak ON_UPDATE_COMMAND_UI işleyicisi ile o düğmenin komut kimliği.ON_UPDATE_COMMAND_UIayırıcılar için çağrılmaz ancak pushbuttons ve onay kutusunu düğmeleri denir.

ON_UPDATE_COMMAND_UI İşleyicisi çağırabilir:

  • Etkinleştirme: düğmesi devre dışı bırakılır.Bu aynı derecede pushbuttons ve onay kutusunu düğmeleri çalışır.

  • SetCheck: Düğme onay durumunu ayarlamak için.Bu araç çubuğu düğmesi için arama bir onay kutusu düğmesi açılır.SetCheck0 (işaretli), 1 (işaretli) veya 2 (belirsiz) olabilen bir parametre alır

  • SetRadio: Steno SetCheck.

Düğmeleri onay kutusunu "Otomatik" onay kutusu düğme vardır; Kullanıcı bastığında, bunlar hemen durumu değişir.Aşağı ya da basılı durumu denetlenir.Bir düğme "belirsiz" durumuna değiştirmek için yerleşik kullanıcı arabirimi yolu yoktur; kod boyunca yapılması gerekir.

Özelleştirme API, belirli bir araç çubuğu düğmesi durumunu değiştirmek için izin verir, bu durumda tercihen değiştirmelisiniz ON_UPDATE_COMMAND_UI gösteren bir araç çubuğu düğmesini komut işleyicisi.Unutmayın, boşta işlemi, araç çubuğu düğmeleri ile durumunu değiştirir ON_UPDATE_COMMAND_UI bu durumları SetButtonStyle yapılan değişiklikler sonraki kayıp alabilir böylece işleyicisi boş.

Araç çubuğu düğmeleri gönderir wm_command normalde tarafından işlenme ve iletiler normal düğme veya menü öğeleri gibi bir ON_COMMAND işleyici sağlar aynı sınıfta ON_UPDATE_COMMAND_UI işleyicisi.

Görüntü durumları için kullanılan dört araç çubuğu düğme stillerini (tbbs_ değerler) şunlardır:

  • tbbs_checked: onay kutusunu (aşağı) şu anda teslim edilmiş.

  • TBBS_INDETERMINATE: onay kutusu şu anda belirsiz.

  • TBBS_DISABLED: Şu anda düğmesi devre dışıdır.

  • tbbs_pressed: Şu anda düğmeye basıldığında.

Altı resmi Windows arabirimi uygulama Tasarım Kılavuzu düğme stillerini aşağıdaki tbbs değerleri tarafından temsil edilir:

  • En fazla = 0

  • Fare tuşunu tbbs_pressed = (| başka bir stil)

  • Devre dışı TBBS_DISABLED =

  • Aşağı tbbs_checked =

  • tbbs_checked = disabled | TBBS_DISABLED

  • Belirsiz = TBBS_INDETERMINATE

CDialogBar

Standart Windows denetimleri içeren denetim çubuğu iletişim çubuktur.Denetimleri içerir ve bunlar arasında sekme destekleyen bir iletişim kutusu gibi davranır.Ayrıca çubuğunu göstermek için iletişim şablonu kullanır, iletişim gibi davranır.

A CDialogBar standart pushbutton denetimleri içeren baskı önizleme araç için kullanılır.

Kullanarak bir CDialogBar kullanılması gibi bir CFormView.İletişim çubuğu iletişim şablonu tanımlamak ve dışında tüm stilleri kaldırma WS_CHILD.İletişim kutusu görünür olmaması gerektiğini unutmayın.

Denetim bildirimleri için bir CDialogBar (gibi araç çubuğu düğmeleri) denetim çubuğunun üst gönderilir.

CDialogBar CCmdUI desteği

İletişim çubuğu düğmeleri ile güncelleştirilmelidir ON_UPDATE_COMMAND_UI işleyicisi mekanizması.Boşta kalma zaman iletişim çubuğu çağıracak ON_UPDATE_COMMAND_UI işleyicisi bir Kimliğe sahip tüm düğmelerin komut kimliği ile > = 0x8000 (yani komut kimliklerini aralığında).

ON_UPDATE_COMMAND_UI İşleyicisi çağırabilir:

  • Etkinleştir: için etkinleştirebilir veya devre dışı bırak düğmesi.

  • SetText: düğme metnini değiştirmek için.

Özelleştirme, standart Pencere Yöneticisi API'leri yapılabilir.

Ayrıca bkz.

Diğer Kaynaklar

Teknik notlar numarasına göre

Kategoriye göre teknik notlar