Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Microsoft Foundation Sınıfları (MFC) kitaplığına destek verilmeye devam ediliyor. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.
Uyarı
Aşağıdaki teknik not, çevrimiçi belgelere ilk kez eklendiğinden beri güncelleştirilmemiştir. Sonuç olarak, bazı yordamlar ve konular güncel olmayabilir veya yanlış olabilir. En son bilgiler için, çevrimiçi belge dizininde ilgilendiğiniz konuyu aramanız önerilir.
Bu not MFC'deki denetim çubuğu sınıflarını açıklar: genel CControlBar, CStatusBar, CToolBar, CDialogBar ve CDockBar.
CControlBar
A ControlBar , şu türetilmiş bir CWndsınıftır:
Çerçeve penceresinin üstüne veya altına hizalanır.
HWND tabanlı denetimler (örneğin,
CDialogBar) veya başka bir tabana dayanmayan öğeler (örneğin,HWND,CToolBar) içeren alt öğeler içerebilir.
Denetim çubukları ek stilleri destekler:
CBRS_TOP (Varsayılan) denetim çubuğunu en üste sabitleyin.
CBRS_BOTTOM Denetim çubuğunu alta sabitleyin.
CBRS_NOALIGN Ana pencere yeniden boyutlandırıldığında kontrol çubuğunu yeniden konumlandırmayın.
türetilen CControlBar sınıflar daha ilginç uygulamalar sağlar:
CStatusBarDurum çubuğu, öğeler metin içeren durum çubuğu bölmeleridir.CToolBarAraç çubuğu, öğeler bir satıra hizalanmış bit eşlem düğmeleridir.CDialogBarStandart windows denetimlerini içeren araç çubuğu benzeri bir çerçeve (bir iletişim kutusu şablonu kaynağından oluşturulur).CDockBarDiğerCControlBartüretilmiş nesneler için genelleştirilmiş bir yerleştirme alanı. Bu sınıfta kullanılabilen belirli üye işlevleri ve değişkenlerin gelecekteki sürümlerde değişme olasılığı yüksektir.
Tüm denetim çubuğu nesneleri/pencereleri, bir ebeveyn çerçeve penceresinin alt pencereleri olacaktır. Bunlar genellikle çerçevenin istemci alanına eşdüzey olarak eklenir (örneğin, MDI İstemcisi veya görünümü). Denetim çubuğunun çocuk pencere kimliği önemlidir. Denetim çubuğunun varsayılan düzeni yalnızca AFX_IDW_CONTROLBAR_FIRST AFX_IDW_CONTROLBAR_LAST aralığında kimlikleri olan denetim çubukları için çalışır. 256 kontrol çubuğu kimlik aralığı olmasına rağmen, bu kontrol çubuğu kimliklerinin ilk 32'si, baskı önizleme mimarisi tarafından doğrudan desteklendikleri için özeldir.
CControlBar sınıfı, aşağıdakiler için standart bir uygulama sağlar:
Denetim çubuğunu çerçevenin üstüne, altına veya iki tarafına hizalama.
Denetim öğesi dizileri tahsis etme.
Türetilmiş sınıfların uygulanmasını destekleme.
C++ kontrol çubuğu nesneleri genellikle türetilmiş bir CFrameWnd sınıfının üyeleri olarak eklenir ve üst sınıf HWND ve nesne yok edildiğinde temizlenir. Yığın üzerinde bir denetim çubuğu nesnesi ayırmanız gerekiyorsa, yok edildiğinde 'yi çağırmak için kontrol çubuğunun delete this; üyesini HWND olarak ayarlamanız yeterlidir.
Uyarı
MFC'nin CControlBar, CStatusBar, veya CToolBar gibi türetilmiş sınıflarından birini kullanmak yerine kendi CDialogBar türetilmiş sınıfınızı oluşturursanız, m_dwStyle veri üyesini ayarlamanız gerekir. Bu, Create geçersiz kılma ile yapılabilir.
// CMyControlBar is derived from CControlBar
BOOL CMyControlBar::Create(CWnd* pParentWnd,
DWORD dwStyle,
UINT nID)
{
m_dwStyle = dwStyle;
.
.
.
}
Denetim Çubuğu Düzen Algoritması
Denetim çubuğu düzen algoritması çok basittir. Çerçeve penceresi, denetim çubuğu aralığındaki tüm çocuklara bir WM_SIZEPARENT iletisi gönderir. Bu iletiyle birlikte, üst öğeye ait istemci dikdörtgeninin işaretçisi iletilir. Bu ileti çocuklara Z düzeninde gönderilir. Denetim çubuğu alt öğeleri, kendilerini konumlandırmak ve üst öğe istemci alanının boyutunu küçültmek için bu bilgileri kullanır. Ana istemci penceresini (genellikle bir MDI istemcisi, görünüm veya bölücü penceresi) konumlandırmak için normal istemci alanı (daha az denetim çubukları) için kalan son dikdörtgen kullanılır.
Daha fazla ayrıntı için CWnd::RepositionBars ve CFrameWnd::RecalcLayout bölümüne bakın.
WM_SIZEPARENT de dahil olmak üzere MFC özel Windows iletileri Teknik Not 24'te belgelenmiştir.
CStatusBar
Durum çubuğu, metin çıkış bölmeleri içeren bir denetim çubuğudur. Metin çıkış bölmelerini kullanmanın iki yaygın yolu vardır:
Mesaj satırı olarak
(örneğin, standart menü yardım iletisi satırı). Bunlara genellikle 0 tabanlı bir dizinle erişilir
Durum göstergeleri olarak
(örneğin, CAP, NUM ve SCRL göstergeleri). Bunlara genellikle dize/komut kimliğiyle erişilir.
Durum çubuğunun yazı tipi 10 punto MS Sans Serif'tir (Windows Arabirim Uygulaması Tasarım Kılavuzu veya yazı tipi eşleyicileri tarafından 10 punto İsviçre orantılı yazı tipiyle en iyi eşleşmesi tarafından dikte edilir). Japonca sürüm gibi belirli Windows sürümlerinde, seçilen yazı tipleri farklıdır.
Durum çubuğunda kullanılan renkler, Windows Arabirimi Uygulama Tasarım Kılavuzu'nun önerisiyle de tutarlıdır. Bu renkler sabit kodlanmaz ve Denetim Masası'ndaki kullanıcı özelleştirmesine yanıt olarak dinamik olarak değiştirilir.
| Ürün | Windows Color 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 üst/sol kenarlar | COLOR_BTNHIGHLIGHT | RGB(255, 255, 255) |
| Durum çubuğu alt/sağ kenar | COLOR_BTNSHADOW | RGB(128, 128, 128) |
CStatusBar için CCmdUI Desteği
Göstergelerin güncellenme yöntemi genellikle ON_UPDATE_COMMAND_UI mekanizmasından geçer. Boşta kalma süresinde durum çubuğu, gösterge bölmesinin dize kimliğine sahip ON_UPDATE_COMMAND_UI işleyicisini çağırır.
ON_UPDATE_COMMAND_UI işleyicisi şu çağrıyı yapabilir:
Enable: Pencereyi etkinleştirmek veya devre dışı bırakmak için. Devre dışı bırakılan bölme tam olarak etkin bir bölmeye benzer, ancak metin görünmez (yani metin göstergesini kapatır).SetText: Metni değiştirmek için. Bölme otomatik olarak yeniden boyutlandırılmayacağından bunu kullanırsanız dikkatli olun.
Oluşturma ve özelleştirme API'leri hakkındaki ayrıntılar için Sınıf Kitaplığı Başvurusu'ndakiCStatusBar sınıfına bakın. Durum çubuklarının çoğu özelleştirmesi, durum çubuğu başlangıçta görünür hale getirilmeden önce yapılmalıdır.
Durum çubuğu, genellikle ilk bölme olan yalnızca bir genişletilebilir bölmeyi destekler. Bu bölmenin boyutu gerçekten en düşük boyuttadır. Tüm bölmelerin minimum boyutundan daha büyükse, durum çubuğundaki ek genişlik esnetilebilir bölmeye verilecektir. Durum çubuğuna sahip varsayılan uygulamada, ilk bölme esnek olduğundan CAP, NUM ve SCRL göstergeleri sağa hizalanmıştır.
CToolBar
Araç çubuğu, ayırıcılar içerebilen bir dizi bit eşlemli düğmeye sahip bir denetim çubuğudur. İki düğme stili desteklenir: basma düğmeleri ve onay kutusu düğmeleri. Radyo grubu işlevselliği, onay kutusu düğmeleri ve ON_UPDATE_COMMAND_UI ile oluşturulabilir.
Araç çubuğundaki tüm bitmap düğmeler bir bitmapten oluşturulmuştur. Bu bit eşlem, her düğme için bir resim veya karakter içermelidir. Genellikle bit eşlem içindeki görüntülerin/gliflerin sırası, ekranda çizilecekleri sırayla aynıdır. (Bu, özelleştirme API'leri kullanılarak değiştirilebilir.)
Her düğme aynı boyutta olmalıdır. Varsayılan değer standart 24x22 pikseldir. Her resim/simge aynı boyutta olmalı ve bitmap içinde yan yana olmalıdır. Varsayılan görüntü/karakter boyutu 16x15 pikseldir. Bu nedenle, 10 düğmeli bir araç çubuğu için (standart boyutları kullanarak), 160 piksel genişliğinde ve 15 piksel yüksekliğinde bir bit eşlem gerekir.
Her düğmenin bir ve yalnızca bir resmi/karakteri vardır. Farklı düğme durumları ve stilleri (örneğin, basılı, yukarı, aşağı, devre dışı, devre dışı aşağı, belirsiz) tek bir görüntüden/karakterden algoritmik olarak oluşturulur. Herhangi bir renk bit eşlemi veya DIB teoride kullanılabilir. Özgün görüntü gri tonlarındaysa, farklı düğme durumlarını oluşturmaya yönelik algoritma en iyi sonucu sağlar. Örnekler için MFC Genel örneği CLIPART'te sağlanan standart araç çubuğu düğmelerine ve araç çubuğu düğmesi klipartına bakın.
Araç çubuğunda kullanılan renkler, Windows Arabirimi Uygulama Tasarım Kılavuzu'nun önerisiyle de tutarlıdır. Bu renkler sabit kodlanmaz ve Denetim Masası'ndaki kullanıcı özelleştirmesine yanıt olarak dinamik olarak değiştirilir.
| Ürün | Windows Color değeri | Varsayılan RGB |
|---|---|---|
| ToolBar arka planı | COLOR_BTNFACE | RGB(192,192,192) |
| Araç Çubuğu düğmeleri üst/sol kenarlar | COLOR_BTNHIGHLIGHT | RGB(255,255,255) |
| Araç Çubuğu düğmelerinin alt/sağ kenarları | COLOR_BTNSHADOW | RGB(128,128,128) |
Buna ek olarak, araç çubuğu bit eşlem düğmeleri standart Windows düğme denetimleriymiş gibi yeniden renklenir. Bu yeniden renklendirme, bit eşlem kaynaktan yüklendiğinde ve Denetim Masası'ndaki kullanıcı özelleştirmesine yanıt olarak sistem renklerindeki bir değişikliğe yanıt olarak oluşur. Araç çubuğu bit eşlemindeki aşağıdaki renkler otomatik olarak yeniden renklenir, bu nedenle dikkatli kullanılmalıdır. Bit eşleminizin bir kısmının yeniden renklendirmesini istemiyorsanız eşlenen RGB değerlerinden birine yakın bir renk kullanın. Eşleme, kesin RGB değerlerine göre yapılır.
| RGB değeri | Dinamik olarak eşlenmiş 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 |
Oluşturma ve özelleştirme API'leri hakkındaki ayrıntılar için Sınıf Kitaplığı BaşvurusuCToolBar sınıfına CToolBar bakın. Araç çubukları genellikle başlangıçta görünür hale getirilmeden önce özelleştirilmelidir.
Özelleştirme API'leri düğme kimliklerini, stilleri, ara çubuğu genişliğini ve hangi düğme için hangi görüntünün/karakterin kullanılacağını ayarlamak için kullanılabilir. Varsayılan olarak bu API'leri kullanmanız gerekmez.
CToolBar için CCmdUI Desteği
Araç çubuğu düğmelerinin her zaman güncellenmesi, ON_UPDATE_COMMAND_UI mekanizması yardımıyla gerçekleştirilir. Boşta kalma zamanında araç çubuğu, bu düğmenin komut kimliğiyle ON_UPDATE_COMMAND_UI işleyicisini çağırır. ON_UPDATE_COMMAND_UI ayırıcılar için çağrılmaz, ancak basma düğmeleri ve onay kutusu düğmeleri için çağrılır.
ON_UPDATE_COMMAND_UI işleyicisi şu çağrıyı yapabilir:
Enable: Düğmeyi etkinleştirmek veya devre dışı bırakmak için. Bu, basmalı butonlar ve onay kutusu düğmeleri için eşit derecede işler.SetCheck: Düğmenin denetim durumunu ayarlamak için. Bu komutu araç çubuğu düğmesi için çalıştırmak, onu bir onay kutusu düğmesine dönüştürür.SetCheck0 (işaretlenmedi), 1 (işaretli) veya 2 (belirsiz) olabilecek bir parametre alırSetRadio:SetCheckiçin kısaltma.
Onay kutusu düğmeleri "AUTO" onay kutusu düğmeleridir; diğer bir ifadeyle, kullanıcı bastığında hemen durumu değiştirir. İşaretli, aşağı veya depresif durumdur. Bir düğmeyi "belirsiz" duruma dönüştürmenin yerleşik bir kullanıcı arabirimi yolu yoktur; kod aracılığıyla yapılması gerekir.
Özelleştirme API'leri belirli bir araç çubuğu düğmesinin durumunu değiştirmenize izin verir; tercihen araç çubuğu düğmesinin temsil ettiği komutun ON_UPDATE_COMMAND_UI işleyicisinde bu durumları değiştirmeniz gerekir. Boşta işlemenin ON_UPDATE_COMMAND_UI işleyicisi ile araç çubuğu düğmelerinin durumunu değiştireceğini unutmayın, böylece SetButtonStyle aracılığıyla yapılan bu durumlarda yapılan tüm değişiklikler bir sonraki boşta kalma işleminden sonra kaybolabilir.
Araç çubuğu düğmeleri normal düğmeler veya menü öğeleri gibi WM_COMMAND iletiler gönderir ve normalde ON_UPDATE_COMMAND_UI işleyicisini sağlayan aynı sınıftaki bir ON_COMMAND işleyicisi tarafından işlenir.
Görüntüleme durumları için dört Araç Çubuğu düğmesi stili (TBBS_ değerleri) kullanılır:
TBBS_CHECKED: Onay kutusu şu anda işaretli (aşağı).
TBBS_INDETERMINATE: Onay kutusu şu anda belirsiz.
TBBS_DISABLED: Düğme şu anda devre dışı.
TBBS_PRESSED: Düğme şu anda basılı.
Altı resmi Windows Arabirimi Uygulaması Tasarım Kılavuzu düğme stili aşağıdaki TBBS değerleriyle temsil edilir:
Yukarı = 0
Fare Aşağı = TBBS_PRESSED (| başka bir stil)
Devre Dışı = TBBS_DISABLED
Aşağı = TBBS_CHECKED
Aşağı Devre Dışı = TBBS_CHECKED | TBBS_DISABLED
Belirsiz = TBBS_INDETERMINATE
CDialogBar
İletişim kutusu çubuğu, standart Windows denetimleri içeren bir denetim çubuğudur. Denetimleri içeren ve aralarında sekme oluşturmayı destekleyen bir iletişim kutusu gibi davranır. Çubuğu temsil etmek için bir iletişim kutusu şablonu kullandığından, dialoğa benzer şekilde davranır.
Bir CDialogBar, standart basmalı düğme denetimlerini içeren baskı önizleme araç çubuğu için kullanılır.
Bir CDialogBar kullanmak, bir CFormView kullanmak gibidir. İletişim kutusu çubuğu için bir iletişim kutusu şablonu tanımlamanız ve WS_CHILD dışındaki tüm stilleri kaldırmanız gerekir. İletişim kutusunun görünür olmaması gerektiğini unutmayın.
CDialogBar için denetim bildirimleri, denetim çubuğunun ana öğesine gönderilecektir (araç çubuğu düğmeleri gibi).
CDialogBar için CCmdUI Desteği
İletişim çubuğu düğmeleri ON_UPDATE_COMMAND_UI işleyici mekanizması aracılığıyla güncelleştirilmelidir. Boşta kaldığında, iletişim kutusu ON_UPDATE_COMMAND_UI işleyicisini id >= 0x8000 (komut kimlikleri aralığında) olan tüm düğmelerin komut kimliğiyle çağırır.
ON_UPDATE_COMMAND_UI işleyicisi şu çağrıyı yapabilir:
Etkinleştir: düğmesini etkinleştirmek veya devre dışı bırakmak için.
SetText: düğmesinin metnini değiştirmek için.
Özelleştirme, standart pencere yöneticisi API'leri aracılığıyla yapılabilir.
Ayrıca bakınız
Numaraya Göre Teknik Notlar
Kategorilere Göre Teknik Notlar