Yerleşen ve Kayan Araç Çubukları
Microsoft Foundation Sınıf Kitaplığı, yerleşik araç çubuklarını destekler. Sabitlenebilir bir araç çubuğu, üst penceresinin herhangi bir tarafına eklenebilir veya sabitlenebilir ya da kendi mini çerçeve penceresinde ayrılabilir veya kaydırılabilir. Bu makalede uygulamalarınızda yerleşik araç çubuklarının nasıl kullanılacağı açıklanmaktadır.
Uygulamanızın iskeletini oluşturmak için Uygulama Sihirbazı'nı kullanırsanız, sabitlenebilir araç çubukları isteyip istemediğinizi seçmeniz istenir. Varsayılan olarak, Uygulama Sihirbazı uygulamanıza yerleştirilebilir bir araç çubuğu yerleştirmek için gereken üç eylemi gerçekleştiren kodu oluşturur:
Çerçeve penceresinde yerleştirmeyi etkinleştirin.
Araç çubuğu için yerleştirmeyi etkinleştirin.
Araç çubuğunu (çerçeve penceresine) sabitleyin.
Bu adımlardan herhangi biri eksikse, uygulamanız standart bir araç çubuğu görüntüler. Uygulamanızdaki her yerleşik araç çubuğu için son iki adım gerçekleştirilmelidir.
Bu makalede ele alınan diğer konular şunlardır:
Örnekler için bkz. MFC Genel örnek DOCKTOOL .
Çerçeve Penceresine Yerleştirmeyi Etkinleştirme
Araç çubuklarını bir çerçeve penceresine takmak için, yerleştirmeye izin vermek için çerçeve penceresinin (veya hedefin) etkinleştirilmesi gerekir. Bu işlem, çerçeve penceresinin hangi tarafının yerleştirmeyi kabul ettiğini belirten bir dizi stil biti olan bir DWORD parametresini alan CFrameWnd::EnableDocking işlevi kullanılarak yapılır. Bir araç çubuğu yerleştirilecekse ve yerleştirilebileceği birden çok taraf varsa, geçirilen EnableDocking
parametrede belirtilen kenarlar şu sırada kullanılır: üst, alt, sol, sağ. Denetim çubuklarını herhangi bir yere yerleştirebilmek istiyorsanız, CBRS_ALIGN_ANY 'a EnableDocking
geçirin.
Araç Çubuğu için Yerleştirmeyi Etkinleştirme
Hedefi yerleştirme için hazırladıktan sonra, araç çubuğunu (veya kaynağını) benzer şekilde hazırlamanız gerekir. Takmak istediğiniz her araç çubuğu için CControlBar::EnableDocking çağrısı yaparak araç çubuğunun yerleştirileceği hedef tarafları belirtin. Çağrıda CControlBar::EnableDocking
belirtilen kenarlardan hiçbiri çerçeve penceresinde yerleştirme için etkinleştirilen taraflarla eşleşmezse, araç çubuğu sabitlenemez; kayar. Kaydırıldıktan sonra, kayan bir araç çubuğu olarak kalır ve çerçeve penceresine sabitlenemez.
İstediğiniz efekt kalıcı olarak kayan bir araç çubuğuysa, 0 parametresiyle çağırın EnableDocking
. Ardından CFrameWnd::FloatControlBar çağrısı yapın. Araç çubuğu kayan kalır, kalıcı olarak herhangi bir yere yerleştirilemiyor.
Araç Çubuğunu Yerleştirme
Kullanıcı araç çubuğunu yerleştirmeye izin veren çerçeve penceresinin bir tarafına bırakmaya çalıştığında çerçeve CFrameWnd::D ockControlBar'ı çağırır.
Buna ek olarak, denetim çubuklarını çerçeve penceresine takmak için istediğiniz zaman bu işlevi çağırabilirsiniz. Bu normalde başlatma sırasında yapılır. Çerçeve penceresinin belirli bir tarafına birden fazla araç çubuğu yerleştirilebilir.
Araç Çubuğunu Kayan
Sabitlenebilir bir araç çubuğunu çerçeve penceresinden ayırmak, araç çubuğunun kayan olarak adlandırılır. Bunu yapmak için CFrameWnd::FloatControlBar çağrısı yapın. Kaydırılacak araç çubuğunu, yerleştirilmesi gereken noktayı ve kayan araç çubuğunun yatay mı yoksa dikey mi olduğunu belirleyen bir hizalama stili belirtin.
Bir kullanıcı bir araç çubuğunu yerleşik konumundan sürüklediğinde ve yerleştirmenin etkinleştirilmediği bir konuma düşürdüğünde çerçeve bu işlevi çağırır. Bu, çerçeve penceresinin içinde veya dışında herhangi bir yerde olabilir. gibi DockControlBar
, başlatma sırasında da bu işlevi çağırabilirsiniz.
Sabitlenebilir araç çubuklarının MFC uygulaması, yerleşik araç çubuklarını destekleyen bazı uygulamalarda bulunan bazı genişletilmiş özellikleri sağlamaz. Özelleştirilebilir araç çubukları gibi özellikler sağlanmaz.
Araç Çubuğunu Dinamik Olarak Yeniden Boyutlandırma
Visual C++ sürüm 4.0 itibarıyla, uygulamanızın kullanıcılarının kayan araç çubuklarını dinamik olarak yeniden boyutlandırmasını mümkün hale getirebilirsiniz. Genellikle, araç çubuğunun yatay olarak görüntülenen uzun, doğrusal bir şekli vardır. Ancak araç çubuğunun yönünü ve şeklini değiştirebilirsiniz. Örneğin, kullanıcı bir araç çubuğunu çerçeve penceresinin dikey kenarlarından birine yerleştirdiğinde, şekil dikey düzene dönüşür. Araç çubuğunu birden çok düğme satırı içeren bir dikdörtgen olarak yeniden şekillendirmek de mümkündür.
Şunları yapabilirsiniz:
Dinamik boyutlandırmayı araç çubuğu özelliği olarak belirtin.
Sabit boyutlandırmayı araç çubuğu özelliği olarak belirtin.
Bu desteği sağlamak için CToolBar::Create member işlevine yönelik çağrılarınızda kullanılmak üzere iki yeni araç çubuğu stili vardır. Bunlar:
CBRS_SIZE_DYNAMIC Denetim çubuğu dinamiktir.
CBRS_SIZE_FIXED Denetim çubuğu düzeltildi.
Boyut dinamik stili, kullanıcınızın kayan araç çubuğunu yeniden boyutlandırmasına olanak tanır, ancak yerleşik durumdayken yeniden boyutlandırmaz. Araç çubuğu, kullanıcı kenarlarını sürüklerken şekli değiştirmek için gereken yerlerde "kaydırılır".
Boyut sabit stili, her sütundaki düğmelerin konumunu düzelterek araç çubuğunun kaydırma durumlarını korur. Uygulamanızın kullanıcısı araç çubuğunun şeklini değiştiremez. Araç çubuğu, düğmeler arasındaki ayırıcıların konumları gibi belirlenen yerlerde kaydırılır. Araç çubuğunun yerleşik veya kayan olmasına bakılmaksızın bu şekli korur. Efekt, birden çok düğme sütunu içeren sabit bir palettir.
Araç çubuklarınızdaki düğmelerin durumunu ve stilini döndürmek için CToolBar::GetButtonStyle'ı da kullanabilirsiniz. Düğmenin stili, düğmenin nasıl görüneceğini ve kullanıcı girişine nasıl yanıt vereceğini belirler; durum, düğmenin sarmalanmış durumda olup olmadığını belirtir.
Sabit Stil araç çubuğu için Kaydırma Konumlarını Ayarlama
Boyutu sabit olan bir araç çubuğu için, araç çubuğunun kaydırılacağı araç çubuğu düğme dizinlerini belirleyin. Aşağıdaki kod, bunun ana çerçeve pencerenizin OnCreate
geçersiz kılmasında nasıl yapılacağını gösterir:
// Get the style of the first button separator
UINT nStyle = m_wndToolBar.GetButtonStyle(3);
// Augment the state for wrapping
nStyle |= TBBS_WRAPPED;
m_wndToolBar.SetButtonStyle(3, nStyle);
// Do the same for other wrap locations ...
// Set the bar style to size fixed
m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);
// Call docking/floating functions as needed ...
MFC Genel örnek DOCKTOOL, bir araç çubuğunun dinamik düzenini yönetmek için CControlBar ve CToolBar sınıflarının üye işlevlerinin nasıl kullanılacağını gösterir. EDITBAR dosyasına bakın. DOCKTOOL'da CPP.