Ukotvitelné a plovoucí panely nástrojů
Knihovna tříd Microsoft Foundation podporuje dokovatelné panely nástrojů. Ukotvitelný panel nástrojů lze připojit nebo ukotvit na libovolnou stranu nadřazeného okna, nebo ho můžete odpojit nebo plout v samostatném minirámeček okně. Tento článek vysvětluje, jak ve svých aplikacích používat dokovatelné panely nástrojů.
Pokud k vygenerování kostry aplikace použijete Průvodce aplikací, zobrazí se výzva k výběru, jestli chcete ukotvitelné panely nástrojů. Průvodce aplikací ve výchozím nastavení vygeneruje kód, který provede tři akce potřebné k umístění dokovatelného panelu nástrojů v aplikaci:
Povolte ukotvení v okně rámečku.
Pokud některý z těchto kroků chybí, zobrazí se ve vaší aplikaci standardní panel nástrojů. Poslední dva kroky se musí provést pro každý dokovatelný panel nástrojů ve vaší aplikaci.
Další témata probíraná v tomto článku zahrnují:
Příklady najdete v ukázce DOCKTOOL v obecném prostředí MFC.
Povolení ukotvení v okně rámečku
Chcete-li ukotvit panely nástrojů do okna rámečku, musí být okno rámečku (nebo cíl) povolené, aby bylo možné ukotvit. To se provádí pomocí funkce CFrameWnd::EnableDocking , která přebírá jeden parametr DWORD , který je sada bitů stylu označující, která strana okna rámečku přijímá ukotvení. Pokud se má panel nástrojů ukotvit a existuje několik stran, ke kterým může být ukotvený, strany uvedené v parametru předané EnableDocking
v následujícím pořadí: horní, dolní, levý, pravý. Pokud chcete mít možnost ukotvit řídicí panely kdekoli, předejte CBRS_ALIGN_ANY do EnableDocking
.
Povolení ukotvení panelu nástrojů
Jakmile připravíte cíl pro ukotvení, musíte připravit panel nástrojů (nebo zdroj) podobným způsobem. Volání CControlBar::EnableDocking pro každý panel nástrojů, který chcete ukotvit, zadejte cílové strany, ke kterým má panel nástrojů ukotvit. Pokud žádná ze stran zadaných ve volání CControlBar::EnableDocking
neodpovídá stranám povoleným pro ukotvení v okně rámečku, panel nástrojů nemůže ukotvit – bude plovoucí. Jakmile je plovoucí, zůstane plovoucím panelem nástrojů, který nemůže ukotvit do okna rámečku.
Pokud je požadovaným efektem trvale plovoucí panel nástrojů, zavolejte EnableDocking
s parametrem 0. Potom zavolejte CFrameWnd::FloatControlBar. Panel nástrojů zůstává plovoucí, trvale se nedá ukotvit na libovolném místě.
Ukotvení panelu nástrojů
Architektura volá CFrameWnd::D ockControlBar , když se uživatel pokusí vypustit panel nástrojů na straně okna rámečku, který umožňuje ukotvení.
Kromě toho můžete tuto funkci kdykoli volat a ukotvit řídicí panely do okna rámečku. To se obvykle provádí během inicializace. Více než jeden panel nástrojů lze ukotvit na určitou stranu okna rámečku.
Plovoucí panel nástrojů
Odpojení dokovatelného panelu nástrojů z okna rámečku se nazývá plovoucí panel nástrojů. Chcete-li to provést, zavolejte CFrameWnd::FloatControlBar . Zadejte panel nástrojů, který má být plovoucí, bod, kam má být umístěn, a styl zarovnání, který určuje, zda je plovoucí panel nástrojů vodorovný nebo svislý.
Architektura tuto funkci volá, když uživatel přetáhne panel nástrojů z ukotveného umístění a zahodí ji do umístění, kde není ukotvení povoleno. To může být kdekoli uvnitř nebo mimo okno rámečku. Stejně jako v případě DockControlBar
, můžete tuto funkci také volat během inicializace.
Implementace dokovatelných panelů nástrojů MFC neposkytuje některé rozšířené funkce nalezené v některých aplikacích, které podporují dokovatelné panely nástrojů. Funkce, jako jsou přizpůsobitelné panely nástrojů, nejsou k dispozici.
Dynamická změna velikosti panelu nástrojů
Od verze Visual C++ 4.0 můžete uživatelům aplikace dynamicky změnit velikost plovoucích panelů nástrojů. Panel nástrojů má obvykle dlouhý lineární obrazec, který se zobrazuje vodorovně. Můžete ale změnit orientaci panelu nástrojů a jeho tvar. Když například uživatel ukotví panel nástrojů proti jedné ze svislých stran okna rámečku, obrazec se změní na svislé rozložení. Je také možné přetvoření panelu nástrojů do obdélníku s více řádky tlačítek.
Můžete provádět následující akce:
Zadejte dynamickou velikost jako charakteristiku panelu nástrojů.
Zadejte pevnou velikost jako charakteristiku panelu nástrojů.
Pro zajištění této podpory existují dva nové styly panelu nástrojů pro použití ve volání CToolBar::Create členské funkce. Jsou to tyto:
CBRS_SIZE_DYNAMIC Ovládací panel je dynamický.
CBRS_SIZE_FIXED Ovládací panel je pevný.
Dynamický styl velikosti umožňuje uživateli změnit velikost panelu nástrojů, když je plovoucí, ale ne během ukotvení. Panel nástrojů se zalamuje tam, kde je potřeba změnit obrazec při přetahování okrajů uživatelem.
Pevný styl velikosti zachovává stavy zalamování panelu nástrojů a opravuje pozici tlačítek v jednotlivých sloupcích. Uživatel aplikace nemůže změnit tvar panelu nástrojů. Panel nástrojů se zalomí na určených místech, například umístění oddělovačů mezi tlačítky. Udržuje tento obrazec bez ohledu na to, jestli je panel nástrojů ukotvený nebo plovoucí. Efekt je pevná paleta s více sloupci tlačítek.
Můžete také použít CToolBar::GetButtonStyle k vrácení stavu a stylu tlačítek na panelech nástrojů. Styl tlačítka určuje, jak se tlačítko zobrazí a jak reaguje na uživatelský vstup; stav informuje, zda je tlačítko v zabaleném stavu.
Nastavení umístění zalamování pro panel nástrojů s pevným stylem
U panelu nástrojů s pevným stylem určete indexy tlačítek panelu nástrojů, na kterých se panel nástrojů zabalí. Následující kód ukazuje, jak to udělat v přepsání okna hlavního OnCreate
rámce:
// 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 ...
Ukázka MFC Obecné DOCKTOOL ukazuje, jak používat členské funkce tříd CControlBar a CToolBar ke správě dynamického rozložení panelu nástrojů. Podívejte se na soubor EDITBAR. CPP v DOCKTOOL.