Aracılığıyla paylaş


TN029: Splitter pencereleri

Bu not mfc açıklar CSplitterWnd sınıfı, pencereyi böler ve diğer bölmede windows yeniden boyutlandırma yönetir sağlar.

Ayırıcı Stili

A CSplitterWnd windows bölme, iki farklı stillerini destekler.

Oluşturulduğunda "statik ayırıcılar," bölücü Pencere bölmeleri oluşturur.Sipariş ve bölmeleri sayısı hiçbir zaman değiştirin.Farklı bölmeleri yeniden boyutlandırmak için bölme çubuğunu kullanılır.Bu stil, farklı görünüm sınıf her bölmesinde görüntülemek için kullanabilirsiniz.Visual C++ grafik düzenleyici ve Windows Dosya Yöneticisi bu ayırıcı stili kullanan programlar örnektir.Bu bölme pencerenin stil ayırıcı kutularına kullanmaz.

"İçinde dinamik ayırıcılar," ek bölmeler oluşturulur ve kullanıcı bölmelerini ve kaydını bölmelerini yeni görünümler yok.Bu bölme, tek bir görünümü ile başlar ve bölücü kutularını bölme başlatmak kullanıcı sağlar.Tek yönde bölünmüş görünüm bölme penceresini dinamik olarak yeni bir görüntüleme nesnesi oluşturur.Bu yeni bir görüntüleme nesnesi, yeni bir bölme temsil eder.Klavye arabirimi kullanarak iki yönde görünümü bölünmüş ise, üç yeni görüntüleme nesneleri için üç yeni bölme bölme penceresini oluşturur.Bölme etkin durumdayken Windows bölme kutusunu bölmeler arasında ayırıcı çubuğu olarak görüntüler.Windows, kullanıcı bir bölmeyi kaldırır, ancak bölücü pencere kadar özgün görünümü kalır bozulur ek görüntüleme nesneleri bozar.Microsoft Excel ve Microsoft Word'Ü dinamik ayırıcı stili kullanan uygulamalar örnektir.

Bölme pencerenin her iki tür oluşturduğunuzda, satır ve sütun ayırıcı yöneten en fazla sayısını belirtmeniz gerekir.Tüm satır ve sütunları doldurmak için bölmeleri statik Bölümlendirici oluşturacaktır.Dinamik bir ayırıcı ilk bölmesini oluşturacak, CSplitterWnd oluşturulur.

En fazla statik ayırıcılar için belirttiğiniz bölmeleri 16 16 sütun satır sayısıdır.Önerilen yapılandırmalar şunlardır:

  • 1 x 2 satır sütun: genellikle benzemez bölmeleri ile

  • Sütun 2 satır x 1: genellikle benzemez bölmeleri ile

  • 2 satır x 2 sütun: genellikle benzer bölmeleri ile

En yüksek dinamik ayırıcılar için belirttiğiniz bölmeleri 2 sütun 2 satır sayısıdır.Önerilen yapılandırmalar şunlardır:

  • 1 x 2 satır ve sütunlar: sütun halinde veri

  • Sütun 2 satır x 1: metin veya veri

  • 2 satır x 2 sütun: ızgara veya tablo için veri yönelimli

Splitter örnekleri

mfc örnek programların çoğunu splitter pencereleri doğrudan veya dolaylı olarak kullanın.mfc genel örnek VIEWEX nasıl bir ayırıcı bölme içinde yerleştirmek dahil olmak üzere statik ayırıcılar birkaç kullanımları gösterilmektedir.

ClassWizard, yeni bir bölme penceresini içeren birden çok belge arabirim (MDI) alt kare pencere sınıfı oluşturmak için de kullanabilirsiniz.Splitter pencereleri hakkında daha fazla bilgi için bkz: birden çok belge türleri, görünümleri ve çerçeve Windows.

Uygulama tarafından kullanılan terimler

Splitter pencereleri belirli terimler listesi verilmiştir:

  • CSplitterWnd:
    Bölme bölme kontrol eder ve bir satır veya sütundaki tüm bölmeler arasında paylaşılan kaydırma çubuklarını sağlayan pencere.Satırlar ve sütunlar ile sıfır tabanlı sayılar belirtin (ilk bölmesidir satır = 0 ve sütun = 0).

  • Bölme:
    Uygulamaya özgü penceresi, bir CSplitterWnd yönetir.Bir genellikle nesneyi türetilir bölmesidir CView sınıfı, ancak herhangi bir CWnd uygun alt pencere kimliğine sahip nesne

    Kullanmak için bir CWnd-türetilen nesne, pass RUNTIME_CLASS nesnesinin CreateView işlevini kullanırsanız, yaptığınız gibi bir CView-türetilmiş sınıf.Sınıfınızın kullanmalısınız DECLARE_DYNCREATE ve IMPLEMENT_DYNCREATE framework çalışma zamanında dinamik oluşturma kullandığından.Lot kodu olsa CSplitterWnd , özel CView sınıfı CObject::IsKindOf bu işlemleri yapılmadan önceki her zaman kullanılır.

  • Bölme çubuğu:
    Satır ve sütunları bölmeleri arasında yerleştirilmiş bir denetim.Satır boyutunu veya bölmeleri sütunlarını ayarlamak için kullanılabilir.

  • Bölme kutusu:
    Dinamik bir denetimde CSplitterWnd , yeni satırlar veya Sütunlar bölmelerinde oluşturmak için kullanabilirsiniz.Dikey kaydırma çubuklarının veya yatay kaydırma çubukları sol üstünde bulunur.

  • Splitter kesişim:
    Dikey ayırıcı çubuğu ve Yatay ayırıcı çubuğu kesişimini.Aynı anda bir satır ve sütun bölmeleri boyutunu ayarlamak için sürükleyebilirsiniz.

Paylaşılan kaydırma çubukları

CSplitterWnd Sınıfı, paylaşılan kaydırma çubukları da destekler.Bu kaydırma çubuğu denetimleri alt öğeleri olan CSplitterWnd ve ayırıcı farklı bölmeler ile paylaşılır.

Örneğin, 1 x 2 satır sütun penceresinde ws_vscroll oluştururken belirtebileceğiniz CSplitterWnd.Windows iki bölme arasındaki paylaşılan özel kaydırma çubuğu denetimi yaratır.

[      ][      ][^]
[pane00][pane01][|]
[      ][      ][v]

Kullanıcı kaydırma çubuğunu hareket ettiğinde WM_VSCROLL iki görünümde iletileri gönderilecek.Ya da görünümü kaydırma çubuğu konumunu belirler, paylaşılan kaydırma çubuğunu ayarlayın.

Paylaşılan kaydırma çubukları ile benzer bir görünüm nesneleri en yararlı olduğunu unutmayın.Bir ayırıcı değişik görünümleri karıştırırsanız, kaydırma konumlarına koordine etmek için özel bir kod yazmanız gerekebilir.Herhangi bir CView-türetilmiş sınıf kullanan CWnd API'leri paylaşılan kaydırma çubuğu varsa temsilci kaydırma çubuğu.CScrollView Uygulama örneği olan bir CView destekleyen sınıf kaydırma çubuklarını paylaşılan.Gelen türetilmemiş sınıfları CView, üzerinde denetim kaydırma çubuklarını kullan sınıfları veya standart Windows uygulamalarının kullanımına sınıfları (örneğin, CEditView) paylaşılan kaydırma çubuğu özelliğiyle çalışmaz CSplitterWnd.

Minimum boyutları

Her satır için bir minimum satır yüksekliği vardır ve her sütun için en az bir sütun genişliği vardır.Bu en az bir bölme tam ayrıntılı olarak gösterilecek küçük değil garanti eder.

Statik Bölümlendirici penceresi ilk minimum satır yüksekliği veya sütun genişliği 0'dır.Dinamik splitter penceresi ilk minimum satır yüksekliği veya sütun genişliği ayarlanmış sizeMin parametresi CSplitterWnd::Create işlevi.

Bu minimum boyutları kullanarak değiştirmek CSplitterWnd::SetRowInfo ve CSplitterWnd::SetColumnInfo fonksiyonlar.

Gerçek vs.İdeal boyutları

Splitter penceresi içindeki bölmeler düzenini içeren çerçeve boyutuna bağlıdır.Bir kullanıcı içeren çerçeve boyutlandırdığında CSplitterWnd yeniden konumlandırır ve bunların yanı sıra olası uyacak şekilde, bölmeleri yeniden boyutlandırır.

Kullanıcı yüksekliği veya sütun genişliği boyutlarını el ile satır ayarlayabilirsiniz veya program kullanarak ideal boyutu ayarlayabilirsiniz CSplitterWnd sınıfı.Gerçek boyutu daha küçük veya büyük ideal olabilir.Windows ideal boyutunu görüntülemek için yeterli alan yoksa veya çok fazla boş alanı sağ veya bölme pencerenin ise gerçek boyutunu ayarlar.

Özel Denetimler

Özelleştirilmiş davranış ve özelleştirilmiş bir arabirim sağlamak için birçok işlevi geçersiz kılabilirsiniz.Bu ilk kümesi bölme pencerenin çeşitli grafik bileşenleri için diğer belirgin sağlamak için geçersiz kılabilirsiniz.

  • virtual void OnDrawSpltter(CDC* pDC, ESplitType nType, const CRect& rect);

  • virtual void OnInvertTracker(const CRect& rect);

Paylaşılan bir kaydırma çubuğu denetimi oluşturmak için bu işlevi çaKaydırma çubuğunun yanında ek denetimler oluşturmak için kılabilirsiniz.

  • virtual BOOL CreateScrollBarCtrl(DWORD dwStyle, UINT nID);

Bu işlevler, dinamik bölme pencerenin mantığını uygular.Bunlar daha gelişmiş splitter mantığını sağlayan kılabilirsiniz.

  • virtual void DeleteView(int row, int col);

  • virtual BOOL SplitRow(int cyBefore);

  • virtual BOOL SplitColumn(int cxBefore);

  • virtual void DeleteRow(int rowDelete);

  • virtual void DeleteColumn(int colDelete);

CView işlevi

CView Sınıfı için temsilci seçmek üzere üst düzey aşağıdaki komutları kullanır CSplitterWnd uygulaması.Bu komutlar sanal, çünkü standart CView uygulaması değil tüm gerekli CSplitterWnd uygulaması bağlantı kurulacak.Kullanan uygulamalar için CView ama CSplitterWnd, CSplitterWnd uygulaması bağlanmamış uygulama ile.

  • virtual BOOL CanActivateNext(BOOL bPrev = FALSE);
    ID_NEXT_PANE veya ID_PREV_PANE şu anda mümkün olup olmadığını denetler.

  • virtual void ActivateNext(BOOL bPrev = FALSE);
    "Sonraki Bölme" veya "Önceki Bölme" komutu yürütür.

  • virtual BOOL DoKeyboardSplit();
    Böl komutu, genellikle "pencereyi Böl" klavye yürütür.

Ayrıca bkz.

Diğer Kaynaklar

Teknik notlar numarasına göre

Kategoriye göre teknik notlar