Sdílet prostřednictvím


TN029: Rozdělovač Windows

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

Rozdělovač styly

A CSplitterWnd podporuje windows rozdělení dvou různých stylů.

V "statické propojovací jednotky," vytvoří okno rozdělovač podokna při jeho vytvoření.Nikdy měnit pořadí a počet podoken.Dělicích pruhů lze změnit velikost jednotlivých podoken.Tento styl můžete použít k zobrazení různých zobrazení třídy 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 polí nepoužívá.

V "dynamické propojovací jednotky," Další podokna vytvořen a zničení uživatele rozdělení a OSN rozdělení nové zobrazení.Tento rozdělovač začíná jedno zobrazení a poskytuje rozdělovač polí pro uživatele zahájit rozdělení.Okno rozdělovač 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ělit v obou směrech pomocí rozhraní klávesnice, vytvoří okno rozdělovač tři nové objekty zobrazení pro tři podokna.Rozdělení je aktivní, zobrazí systém Windows jako rozdělovač mezi podokny rozdělovač pole.Windows zničí další zobrazení objektů uživatel odebere rozdělení, ale původní zobrazení zůstává až do vlastního okna rozdělovač zničen.Aplikace Microsoft Excel a Microsoft Word jsou příklady aplikací, které používají styl rozdělování dynamické.

Při vytváření buď druh okna příčky musí určit maximální počet řádků a sloupců, které bude spravovat příčky.Statický rozdělovač vytvoří podokna k vyplnění řádků a sloupců.Vytvoří dynamické rozdělovač prvního podokna při CSplitterWnd je vytvořen.

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

  • x 2 1 řádek sloupce: obvykle s odlišnými podoken

  • sloupec 2 řádky, x 1: obvykle s odlišnými podoken

  • x 2 2 řádky, sloupce: obvykle s podobnými podoken

Maximální počet podokna určující pro dynamické propojovací jednotky je 2 řádků a sloupců 2.Doporučená konfigurace jsou:

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

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

  • x 2 2 řádky, sloupce: pro tabulku nebo tabulky orientované dat

Příklady příčky

Mnoho MFC ukázkové programy používají rozdělovač přímo nebo nepřímo.Obecné MFC vzorku VIEWEX ukazuje několik použití statické propojovací jednotky, jak umístit rozdělovač rozdělovač.

ClassWizard můžete také vytvořit nový více rozhraní podřízené rámeček okna třída dokumentu obsahující okno příčky.Další informace o rozdělování windows naleznete v více typů dokumentů, zobrazení a rám okna.

Terminologie používaná implementace

Zde je seznam termínů, které jsou specifické pro systém windows příčky:

  • CSplitterWnd:
    Okno obsahuje prvky rozdělení podokna a posuvník, které jsou sdíleny mezi všechna podokna na řádku nebo sloupci.Určit řádky a sloupce s čísla začínající nulou (první podokno je řádek = 0 a sloupce = 0).

  • Podokno:
    Okno aplikace specifické pro aplikaci, CSplitterWnd spravuje.Podokno je obvykle objekt, který je odvozen z Třída CView, ale může být CWnd objekt s identifikátorem příslušné podřízené okno.

    Použití CWnd-odvozené objekt, předat RUNTIME_CLASS objektu CreateView funkce, jako byste pracovali CView-odvozené třídy.Třída musí používat DECLARE_DYNCREATE a IMPLEMENT_DYNCREATE rámci používá dynamické vytvoření za běhu.Ačkoli mnoho kód v CSplitterWnd týkající se CView třídy, CObject::IsKindOf je vždy použita před provedením těchto akcí.

  • Oddělovač:
    Ovládací prvek, který je umístěn mezi řádky a sloupce podoken.Mohou být použity Úprava velikosti řádků nebo sloupců podoken.

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

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

Sdílené posuvníky

CSplitterWnd Třída také podporuje sdílené posuvníky.Tyto ovládací prvky Posun řádku jsou děti CSplitterWnd a jsou sdílena s různými podokny v příčky.

Například v okně sloupce x 2 1 řádek, 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ž uživatel přesune posuvník, WM_VSCROLL zprávy budou odeslány do obou zobrazeních.Při zobrazení buď nastaví pozici pruhu posuvníku, bude nastaveno sdílené posuvníku.

Všimněte si, že sdílené posuvníky s objekty zobrazení podobné nejužitečnější.Pokud mísíte zobrazení různé typy rozdělovač, pak může mít speciální kód koordinovat své postoje posuvníku.Všechny CView-odvozené třídy, která se používá CWnd posuvníku, pokud existuje, bude rozhraní API delegovat na sdílené posuvníku.CScrollView Je příkladem implementace CView třídy, která podporuje sdílené posuvníky.Třídy, které nejsou odvozeny z CView, třídy, které spoléhají na-ovládací prvek posuvník nebo tříd, které používají standardní implementace systému Windows (například CEditView) nebude funkce sdílené posunout panel s 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 není příliš malá úplné podrobnosti v podokně.

Statický rozdělovač okna minimální počáteční řádek výšku a šířku sloupce je 0.Dynamické rozdělovač okna jsou nastavena minimální počáteční řádek výšku a šířku sloupce sizeMin parametr CSplitterWnd::Create funkce.

Tyto minimální velikosti můžete změnit pomocí CSplitterWnd::SetRowInfo a CSplitterWnd::SetColumnInfo funkcí.

Skutečné vs.Ideální velikosti

Uspořádání podoken v okně rozdělovač závisí na velikosti rámce, který je obsahuje.Když uživatel změní velikost rámečku obsahujícího CSplitterWnd jsou přemisťovány a změní velikost okna tak, aby se vešly co možná.

Uživatel ručně nastavit řádek velikosti Šířka Výška a sloupce nebo program lze nastavit ideální velikost CSplitterWnd třídy.Skutečná velikost může být menší nebo větší než ideální.Windows upraví skutečná velikost není dostatek místa k zobrazení ideální velikost nebo je příliš mnoho prázdné místo v dolní části okna rozdělování nebo doprava.

Vlastní ovládací prvky

Mnoho funkcí vlastní chování a vlastní rozhraní můžete přepsat.Tento první sada poskytovat alternativní obrazů pro různé součásti grafické okno rozdělovač můžete přepsat.

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

  • virtual void OnInvertTracker(const CRect& rect);

Volání funkce vytvoření 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 okno dynamické příčky.Přepsat poskytovat rozšířené Logika 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í.Protože tyto příkazy jsou virtuální, standardní CView provádění nebude vyžadovat celou CSplitterWnd propojeny v provádění.Pro aplikace, které používají CView , ale není CSplitterWnd, CSplitterWnd provádění nebudou propojeny s aplikací.

  • virtual BOOL CanActivateNext(BOOL bPrev = FALSE);
    Zkontroluje, zda je nyní možné ID_NEXT_PANE nebo ID_PREV_PANE.

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

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

Viz také

Další zdroje

Technické poznámky podle čísla

Technické poznámky podle kategorie