Sdílet prostřednictvím


TN029: Dělená okna

Tato poznámka popisuje knihovny MFC Třída CSplitterWnd, která poskytuje rozdělí okno a spravuje ostatní podokna okna Změna velikosti.

Rozdělovač styly

A CSplitterWnd podporuje dva různé styly rozdělení systému windows.

V "statické příčky" vytvoří okna rozdělovač podoken při jeho vytvoření.Pořadí a počet příček se nikdy nezmění.Dělicích pruhů je možné změnit velikost jednotlivých podoken.Tento styl můžete použít k zobrazení různých zobrazení tříd v jednotlivých podoknech.Grafický editor Visual C++ a Správce souborů systému Windows jsou příklady programů používajících tento styl rozdělování.Tento styl okna dělicí příčky pole nepoužívá.

Další podokna v "dynamické příčky" se vytvářejí a zničeny jako uživatel rozdělení a zrušení rozdělení nového zobrazení.Tento rozdělovač začíná jedno zobrazení a poskytuje rozdělovač polí pro uživatele k inicializaci rozdělení.Okno oddělovače dynamicky vytvoří nový objekt zobrazení při zobrazení je rozdělení v jednom směru.Tento nový objekt zobrazení představuje nové podokno.Pokud zobrazení je rozděleno v obou směrech pomocí rozhraní klávesnice, rozdělovač okno vytvoří tři nové objekty zobrazení pro tři podokna.Při rozdělení je aktivní, zobrazí systém Windows rozdělovač pole jako oddělovač mezi podokny.Windows odstraní objekty další zobrazení, pokud uživatel odebere rozdělení, ale původní zobrazení zůstane až do okna rozdělovač sám je zničen.Aplikace Microsoft Excel a Microsoft Word jsou příklady aplikací, které používají styl dynamický rozdělovač.

Při vytváření obou druhů rozděleném okně zadejte maximální počet řádků a sloupců, které bude spravovat příčky.Vytvoří statický rozdělovač podoken k vyplnění řádků a sloupců.Vytvoří dynamické rozdělování do prvního podokna při CSplitterWnd je vytvořen.

Maximální počet podoken můžete zadat statické příčky je 16 řádků a 16 sloupců.Doporučená konfigurace jsou:

  • 1 řádek x 2 sloupce: obvykle s odlišnými příčky

  • sloupec 2 řádky x 1: obvykle s odlišnými příčky

  • 2 řádky x 2 sloupce: obvykle se podobné příčky

Maximální počet podokna, které můžete použít pro dynamické příčky je 2 řádků a sloupců 2.Doporučená konfigurace jsou:

  • 1 řádek x 2 sloupce: sloupcová data

  • sloupec 2 řádky x 1: pro textové nebo jiných dat

  • 2 řádky x 2 sloupce: tabulka nebo tabulka orientované na data

Příklady rozdělovače

Mnohé z ukázkové aplikace knihovny MFC pomocí windows rozdělovač přímo nebo nepřímo.Vzorek knihovny MFC Obecné VIEWEX ukazuje několik použití statické příčky, včetně jak umístit rozdělovač v rozdělovač.

ClassWizard také slouží k vytvoření nového více dokumentů rozhraní (MDI) třída podřízeného rámce okno obsahující rozdělovač okno.Další informace o systému windows rozdělovač, viz více typů dokumentů, zobrazení a rámečkům oken.

Terminologie používaná implementace

Zde je seznam podmínek, které jsou specifické pro systém windows příčky:

  • CSplitterWnd:
    Okno, které obsahuje rozdělení podokna ovládací prvky a posuvníky, které jsou sdíleny mezi všechna podokna na řádek nebo sloupec.Určit řádky a sloupce s čísly od nuly (do prvního podokna je řádek = 0 a sloupec = 0).

  • Podokno:
    Zobrazí se okno specifické pro aplikaci, CSplitterWnd spravuje.Panel je obvykle objekt, který je odvozen od Třída CView, ale může být CWnd objekt, který obsahuje ID příslušné podřízené okno.

    Použití CWnd-odvozené objekt, předejte RUNTIME_CLASS objektu CreateView fungovat stejně jako v případě, že jste použili CView-odvozené třídy.Musíte použít vaše třída DECLARE_DYNCREATE a IMPLEMENT_DYNCREATE protože framework používá dynamické vytvoření za běhu.Přestože existuje velké množství kódu v CSplitterWnd týkající se CView třídy, CObject::IsKindOf je vždy používali tyto akce budou provedeny.

  • Příčky:
    Ovládací prvek, který je umístěn mezi řádky a sloupce podokna.Může sloužit k úpravě velikosti řádků nebo sloupců podokna.

  • Rozdělovač pole:
    Ovládací prvek v dynamické CSplitterWnd , že můžete použít k vytvoření nových řádků nebo sloupců podokna.Je umístěn v horní svislé posuvníky nebo vlevo od vodorovné posuvníky.

  • Průnik příčky:
    Průsečík svislé příčky a vodorovný oddělovač.Přetažením upravte velikost řádků a sloupců podokna současně.

Sdílené posuvníky

CSplitterWnd Třída také podporuje sdílené posuvníky.Děti jsou tyto ovládací prvky panelu přejděte CSplitterWnd a jsou sdílena s různými podokny v příčky.

Například v okně řádek 1 x 2 sloupec, můžete určit WS_VSCROLL při vytváření CSplitterWnd.Systém Windows vytvoří zvláštní posuvník, který je sdílen mezi oběma podokny.

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

Když se uživatel přesune na posuvník WM_VSCROLL zprávy budou odeslány do obou zobrazeních.Buď zobrazit nastaví pozici pruhu posuvníku, bude nastaveno sdílené posuvník.

Všimněte si, že sdílené posuvníky nejužitečnější s podobnými objekty zobrazení.Pokud kombinujete různé typy zobrazení v rozdělovač, je třeba napsat speciální kód koordinace postojů posuvníku.Všechny CView-odvozené třídy, který používá CWnd posuvníku API bude delegovat na sdílené posuvníku, pokud existuje.CScrollView Implementace je jedním z příkladů CView třídy, která podporuje sdílené posuvníky.Třídy, které nejsou odvozeny z CView, tříd, které jsou závislé na posuvníky mimo ovládací prvek nebo tříd, které používají standardní implementace systému Windows (například CEditView) nefungují funkce sdílené posuvníku panel CSplitterWnd.

Minimální velikosti

Pro každý řádek je minimální výšku řádku a pro každý sloupec je minimální šířka.Tato minimální záruky, že některé podokno není příliš malá, má být zobrazeno v úplné podrobnosti.

Řádku počáteční minimální výšku a šířku sloupce pro statický rozdělovač okno je 0.Pro dynamický rozdělovač okno nastavit řádku počáteční minimální výšku a šířku sloupce jsou sizeMin parametr CSplitterWnd::Create funkce.

Tyto minimální velikosti lze změnit pomocí CSplitterWnd::SetRowInfo a CSplitterWnd::SetColumnInfo funkce.

Skutečné vs. Ideální velikosti

Rozložení podokna v rozděleném okně, závisí na velikosti rámce, který je obsahuje.Když uživatel změní velikost obsahující snímek, CSplitterWnd přemístí a změní velikost podokna tak, aby se vešly i možné.

Uživatel může ručně nastavit řádek velikosti Šířka Výška a sloupec nebo můžete program nastavit ideální velikost pomocí CSplitterWnd třídy.Skutečná velikost může být menší nebo větší než ideální.Windows upraví skutečné velikosti, pokud není k dispozici dostatek místa k zobrazení ideální velikost, nebo pokud existuje příliš mnoho prázdného místa vpravo nebo dole okna rozdělovač.

Vlastní ovládací prvky

Mnoho funkcí poskytnout vlastní chování a přizpůsobené rozhraní lze přepsat.Můžete přepsat tato první sada poskytnout alternativní obrazů pro různé součásti grafického okna rozdělovač.

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

  • virtual void OnInvertTracker(const CRect& rect);

Volání této funkce můžete vytvořit sdílené posuvník.Můžete vytvořit další ovládací prvky vedle posuvníku přepsat.

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

Tyto funkce implementovat logiku dynamický rozdělovač okno.Toto nastavení můžete přepsat poskytnout složitější logiku rozdělování.

  • 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);

Funkce CView

CView Třída používá následující příkazy vysokého delegovat CSplitterWnd provedení.Vzhledem k tomu, že tyto příkazy jsou virtuální, standardní CView provedení nevyžaduje celý CSplitterWnd implementace propojení.Pro aplikace, které používají CView , ale ne CSplitterWnd, CSplitterWnd provedení nebude propojena s aplikací.

  • virtual BOOL CanActivateNext(BOOL bPrev = FALSE);
    Zkontroluje, zda je aktuálně možné ID_NEXT_PANE nebo ID_PREV_PANE.

  • virtual void ActivateNext(BOOL bPrev = FALSE);
    Provede příkaz "Další" nebo "předchozí".

  • virtual BOOL DoKeyboardSplit();
    Provede rozdělení příkazu, obvykle "rozdělení okna" klávesnice.

Viz také

Další zdroje

Technické poznámky podle čísel

Technické poznámky podle kategorií