CControlBar – třída
Základní třída pro třídy control-bar CStatusBar, CToolBar, CDialogBar, CReBar a COleResizeBar.
Syntaxe
class CControlBar : public CWnd
Členové
Chráněné konstruktory
Název | Popis |
---|---|
CControlBar::CControlBar | CControlBar Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
CControlBar::CalcDynamicLayout | Vrátí velikost dynamického řídicího panelu jako objekt CSize . |
CControlBar::CalcFixedLayout | Vrátí velikost ovládacího panelu jako objekt CSize . |
CControlBar::CalcInsideRect | Vrátí aktuální rozměry oblasti řídicího pruhu; včetně hranic. |
CControlBar::D oPaint | Vykreslí ohraničení a úchyt ovládacího panelu. |
CControlBar::D rawBorders | Vykreslí ohraničení řídicího panelu. |
CControlBar::D rawGripper | Vykreslí úchyt ovládacího panelu. |
CControlBar::EnableDocking | Umožňuje ukotvit nebo plovoucí ovládací panel. |
CControlBar::GetBarStyle | Načte nastavení stylu řídicího panelu. |
CControlBar::GetBorders | Načte hodnoty ohraničení řídicího panelu. |
CControlBar::GetCount | Vrátí počet prvků bez HWND v ovládacím panelu. |
CControlBar::GetDockingFrame | Vrátí ukazatel na rámec, na který je ukotven ovládací panel. |
CControlBar::IsFloating | Vrátí nenulovou hodnotu, pokud je daný řídicí panel plovoucí řídicí panel. |
CControlBar::OnUpdateCmdUI | Volá obslužné rutiny uživatelského rozhraní příkazů. |
CControlBar::SetBarStyle | Upraví nastavení stylu ovládacího panelu. |
CControlBar::SetBorders | Nastaví hodnoty ohraničení řídicího panelu. |
CControlBar::SetInPlaceOwner | Změní místního vlastníka řídicího panelu. |
Veřejné datové členy
Název | Popis |
---|---|
CControlBar::m_bAutoDelete | Pokud nenízero, CControlBar objekt se odstraní při zničení řídicího panelu Windows. |
CControlBar::m_pInPlaceOwner | Místní vlastník řídicího panelu. |
Poznámky
Ovládací panel je okno, které je obvykle zarovnané doleva nebo vpravo od okna rámečku. Může obsahovat podřízené položky, které jsou buď ovládací prvky založené na HWND, což jsou okna, která generují zprávy systému Windows a reagují na ně, nebo položky, které nejsou založené na HWND, které nejsou windows a jsou spravovány kódem aplikace nebo kódem architektury. Seznamy a ovládací prvky pro úpravy jsou příklady ovládacích prvků založených na HWND; Podokna stavového řádku a rastrová tlačítka jsou příklady ovládacích prvků založených na HWND.
Okna řídicího panelu jsou obvykle podřízená okna nadřazeného okna rámce a obvykle jsou na stejné úrovni jako klientské zobrazení nebo klient MDI okna rámce. Objekt CControlBar
používá informace o obdélníku klienta nadřazeného okna k umístění samotného objektu. Potom informuje nadřazené okno o tom, kolik místa zůstane nepřidělené v klientské oblasti nadřazeného okna.
Další informace najdete tady CControlBar
:
Hierarchie dědičnosti
CControlBar
Požadavky
Hlavička: afxext.h
CControlBar::CalcDynamicLayout
Architektura volá tuto členovou funkci k výpočtu dimenzí dynamického panelu nástrojů.
virtual CSize CalcDynamicLayout(
int nLength,
DWORD nMode);
Parametry
nLength
Požadovaný rozměr řídicího pruhu, vodorovného nebo svislého, v závislosti na dwMode.
nMode
Následující předdefinované příznaky slouží k určení výšky a šířky dynamického řídicího panelu. Pomocí bitové operátoru OR (|
) zkombinujte příznaky.
Příznaky režimu rozložení | Význam |
---|---|
LM_STRETCH | Určuje, zda má být ovládací panel roztažen na velikost rámečku. Nastavte, pokud bar není dokovací panel (není k dispozici pro dokování). Nenastavuje se, když je panel ukotvený nebo plovoucí (je k dispozici pro ukotvení). Pokud je nastavená, LM_STRETCH ignoruje nLength a vrátí dimenze na základě LM_HORZ stavu. LM_STRETCH funguje podobně jako parametr bStretch použitý v CalcFixedLayout; podívejte se, že členová funkce obsahuje další informace o vztahu mezi roztažením a orientací. |
LM_HORZ | Označuje, že pruh je vodorovně nebo svisle orientovaný. Nastaví, pokud je pruh vodorovně orientovaný a pokud je svisle orientovaný, není nastaven. LM_HORZ funguje podobně jako parametr bHorz použitý v CalcFixedLayout; podívejte se, že členská funkce obsahuje další informace o vztahu mezi roztažením a orientací. |
LM_MRUWIDTH | Naposledy použitá dynamická šířka Ignoruje parametr nLength a používá zapamatovaného naposledy použitého šířku. |
LM_HORZDOCK | Vodorovné ukotvené rozměry. Ignoruje parametr nLength a vrátí dynamickou velikost s největší šířkou. |
LM_VERTDOCK | Svislé ukotvené rozměry. Ignoruje parametr nLength a vrátí dynamickou velikost s největší výškou. |
LM_LENGTHY | Nastavte, pokud nLength označuje výšku (směr Y) místo šířky. |
LM_COMMIT | Obnoví LM_MRUWIDTH na aktuální šířku plovoucího řídicího panelu. |
Návratová hodnota
Velikost řídicího pruhu v pixelech objektu CSize .
Poznámky
Přepište tuto členovu funkci tak, aby poskytovalo vlastní dynamické rozložení ve třídách odvozených od CControlBar
. MFC třídy odvozené z CControlBar
, jako CToolbar, přepsat tuto člen funkce a poskytnout vlastní implementaci.
CControlBar::CalcFixedLayout
Voláním této členské funkce vypočítáte vodorovnou velikost řídicího panelu.
virtual CSize CalcFixedLayout(
BOOL bStretch,
BOOL bHorz);
Parametry
bStretch
Určuje, zda má být pruh roztažen na velikost rámečku. Parametr bStretch je nenulový, pokud bar není dokovací pruh (není k dispozici pro dokování) a je 0, pokud je ukotvený nebo plovoucí (k dispozici pro ukotvení).
bHorz
Označuje, že pruh je vodorovně nebo svisle orientovaný. Parametr bHorz je nenulový, pokud je pruh vodorovně orientovaný a je 0, pokud je svisle orientovaný.
Návratová hodnota
Velikost řídicího pruhu v pixelech objektu CSize
.
Poznámky
Řídicí pruhy, jako jsou panely nástrojů, se dají vodorovně nebo svisle roztáhnout tak, aby vyhovovaly tlačítkům obsaženým v ovládacím panelu.
Pokud bStretch je PRAVDA, roztáhněte rozměr podél orientace poskytované bHorz. Jinými slovy, pokud bHorz je NEPRAVDA, je ovládací panel roztažen svisle. Pokud je bStretch NEPRAVDA, nedojde k žádnému roztažení. Následující tabulka uvádí možné permutace a výsledné styly řídicích pruhů bStretch a bHorz.
bStretch | bHorz | Natahování | Orientace | Ukotvení / Ukotvení |
---|---|---|---|---|
TRUE | TRUE | Vodorovné roztažení | Vodorovně orientované | Neukotvit |
TRUE | FALSE | Svislé roztažení | Svisle orientované | Neukotvit |
FALSE | TRUE | Není k dispozici žádné roztažení. | Vodorovně orientované | Dokovací |
FALSE | FALSE | Není k dispozici žádné roztažení. | Svisle orientované | Dokovací |
CControlBar::CalcInsideRect
Architektura volá tuto funkci k výpočtu klientské oblasti řídicího panelu.
virtual void CalcInsideRect(
CRect& rect,
BOOL bHorz) const;
Parametry
Rect
Obsahuje aktuální rozměry řídicího panelu; včetně hranic.
bHorz
Označuje, že pruh je vodorovně nebo svisle orientovaný. Parametr bHorz je nenulový, pokud je pruh vodorovně orientovaný a je 0, pokud je svisle orientovaný.
Poznámky
Tato funkce se volá před vykreslením řídicího panelu.
Přepište tuto funkci tak, aby se přizpůsobilo vykreslení ohraničení a úchytu řídicího panelu.
CControlBar::CControlBar
CControlBar
Vytvoří objekt.
CControlBar();
CControlBar::D oPaint
Volal rámec pro vykreslení ohraničení a úchytu řídicího panelu.
virtual void DoPaint(CDC* pDC);
Parametry
pDC
Odkazuje na kontext zařízení, který se má použít k vykreslení ohraničení a úchytu řídicího panelu.
Poznámky
Přepište tuto funkci tak, aby přizpůsobila chování výkresu ovládacího panelu.
Další metodou přizpůsobení je přepsání DrawBorders
funkcí a DrawGripper
přidání vlastního kódu kreslení pro ohraničení a úchyt. Vzhledem k tomu, že tyto metody jsou volána výchozí DoPaint
metodou, přepsání DoPaint
není potřeba.
CControlBar::D rawBorders
Volá se rozhraním pro vykreslení ohraničení řídicího panelu.
virtual void DrawBorders(
CDC* pDC,
CRect& rect);
Parametry
pDC
Odkazuje na kontext zařízení, který se má použít k vykreslení ohraničení řídicího panelu.
Rect
CRect
Objekt obsahující rozměry řídicího pruhu.
Poznámky
Přepište tuto funkci tak, aby se přizpůsobil vzhled ohraničení řídicího panelu.
CControlBar::D rawGripper
Volal rozhraní pro vykreslení úchytu řídicího panelu.
virtual void DrawGripper(
CDC* pDC,
const CRect& rect);
Parametry
pDC
Odkazuje na kontext zařízení, který se má použít k vykreslení úchytu řídicího panelu.
Rect
Objekt CRect
obsahující rozměry úchytu řídicího panelu.
Poznámky
Přepište tuto funkci tak, aby se přizpůsobil vzhled úchytu řídicího panelu.
CControlBar::EnableDocking
Voláním této funkce povolíte ukotvení řídicího panelu.
void EnableDocking(DWORD dwDockStyle);
Parametry
dwDockStyle
Určuje, jestli ovládací panel podporuje ukotvení a strany nadřazeného okna, na které je možné ovládací panel ukotvit, pokud je podporován. Může to být jedna nebo více z následujících možností:
CBRS_ALIGN_TOP Umožňuje ukotvení v horní části klientské oblasti.
CBRS_ALIGN_BOTTOM Umožňuje ukotvení v dolní části klientské oblasti.
CBRS_ALIGN_LEFT Umožňuje ukotvení na levé straně klientské oblasti.
CBRS_ALIGN_RIGHT Umožňuje ukotvení na pravé straně klientské oblasti.
CBRS_ALIGN_ANY Umožňuje ukotvení na libovolné straně klientské oblasti.
CBRS_FLOAT_MULTI Umožňuje plovoucí více řídicích pruhů v jednom minirámeček okně.
Pokud je hodnota 0 (tj. indikující žádné příznaky), řídicí panel se neukotví.
Poznámky
Zadané strany se musí shodovat s jednou ze stran povolených pro ukotvení v cílovém okně rámečku nebo ovládací panel nelze ukotvit do okna rámečku.
CControlBar::GetBarStyle
Voláním této funkce určíte, která nastavení CBRS_ (styly ovládacích pruhů) jsou aktuálně nastavena pro ovládací panel.
DWORD GetBarStyle();
Návratová hodnota
Aktuální nastavení CBRS_ (styly ovládacích pruhů) pro ovládací panel. Úplný seznam dostupných stylů najdete v tématu CControlBar::SetBarStyle .
Poznámky
Nezpracuje styly WS_ (styl okna).
CControlBar::GetBorders
Vrátí aktuální hodnoty ohraničení pro ovládací panel.
CRect GetBorders() const;
Návratová hodnota
Objekt CRect
, který obsahuje aktuální šířku (v pixelech) každé strany objektu řídicího pruhu. Například hodnota levého členu objektu CRect je šířka levého ohraničení.
CControlBar::GetCount
Vrátí počet položek mimo HWND objektu CControlBar
.
int GetCount() const;
Návratová hodnota
Počet položek jiného typu než HWND na objektu CControlBar
. Tato funkce vrátí hodnotu 0 pro objekt CDialogBar .
Poznámky
Typ položky závisí na odvozeného objektu: podokna pro objekty CStatusBar a tlačítka a oddělovače pro objekty CToolBar .
CControlBar::GetDockingFrame
Voláním této členské funkce získáte ukazatel na aktuální okno rámce, na které je ukotvený ovládací panel.
CFrameWnd* GetDockingFrame() const;
Návratová hodnota
Ukazatel na okno rámečku v případě úspěchu; jinak NULL.
Pokud ovládací panel není ukotvený k oknem rámečku (to znamená, že pokud je řídicí panel plovoucí), vrátí tato funkce ukazatel na nadřazený objekt CMiniFrameWnd.
Poznámky
Další informace o dokovatelných ovládacích pruhech naleznete v tématu CControlBar::EnableDocking a CFrameWnd::D ockControlBar.
CControlBar::IsFloating
Voláním této členské funkce určíte, zda je řídicí panel plovoucí nebo ukotvený.
BOOL IsFloating() const;
Návratová hodnota
Nenulový, pokud je řídicí panel plovoucí; jinak 0.
Poznámky
Chcete-li změnit stav řídicího panelu z ukotveného na plovoucí, zavolejte CFrameWnd::FloatControlBar.
CControlBar::m_bAutoDelete
Pokud nenízero, CControlBar
objekt se odstraní při zničení řídicího panelu Windows.
BOOL m_bAutoDelete;
Poznámky
m_bAutoDelete je veřejná proměnná typu BOOL.
Objekt řídicího pruhu je obvykle vložen do objektu okna rámečku. V tomto případě je m_bAutoDelete 0, protože vložený řídicí panel objekt je zničen při zničení okna rámečku.
Tuto proměnnou nastavte na nenulovou hodnotu, pokud přidělíte CControlBar
objekt v haldě a neplánujete volat delete
.
CControlBar::m_pInPlaceOwner
Místní vlastník řídicího panelu.
CWnd* m_pInPlaceOwner;
CControlBar::OnUpdateCmdUI
Tato členová funkce je volána rozhraním pro aktualizaci stavu panelu nástrojů nebo stavového řádku.
virtual void OnUpdateCmdUI(
CFrameWnd* pTarget,
BOOL bDisableIfNoHndler) = 0;
Parametry
pTarget
Odkazuje na okno hlavního rámce aplikace. Tento ukazatel se používá pro směrování zpráv aktualizace.
bDisableIfNoHndler
Příznak označující, jestli má ovládací prvek, který nemá žádnou obslužnou rutinu aktualizace, by se měl automaticky zobrazit jako zakázaný.
Poznámky
Chcete-li aktualizovat jednotlivá tlačítka nebo podokno, pomocí ON_UPDATE_COMMAND_UI makra v mapě zpráv nastavte obslužnou rutinu aktualizace odpovídajícím způsobem. Další informace o použití tohoto makra najdete v ON_UPDATE_COMMAND_UI .
OnUpdateCmdUI
volá se architekturou, když je aplikace nečinná. Okno rámce, které se má aktualizovat, musí být alespoň nepřímo podřízeným oknem viditelného rámečku. OnUpdateCmdUI
je pokročilý přepisovatelný.
CControlBar::SetBarStyle
Voláním této funkce nastavíte požadované styly CBRS_ pro ovládací panel.
void SetBarStyle(DWORD dwStyle);
Parametry
dwStyle
Požadované styly pro ovládací panel. Může to být jedna nebo více z následujících možností:
CBRS_ALIGN_TOP Umožňuje ukotvit ovládací panel do horní části klientské oblasti okna rámečku.
CBRS_ALIGN_BOTTOM Umožňuje ukotvit ovládací panel do dolní části klientské oblasti okna rámečku.
CBRS_ALIGN_LEFT Umožňuje ukotvení ovládacího panelu na levé straně klientské oblasti okna rámečku.
CBRS_ALIGN_RIGHT Umožňuje ukotvení ovládacího panelu na pravé straně klientské oblasti okna rámečku.
CBRS_ALIGN_ANY Umožňuje ukotvit ovládací panel na libovolnou stranu klientské oblasti okna rámečku.
CBRS_BORDER_TOP Způsobí vykreslení ohraničení na horním okraji řídicího panelu, když bude viditelné.
CBRS_BORDER_BOTTOM Způsobí vykreslení ohraničení na dolním okraji řídicího panelu, když bude viditelné.
CBRS_BORDER_LEFT Způsobí vykreslení ohraničení na levém okraji ovládacího panelu, když bude viditelné.
CBRS_BORDER_RIGHT Způsobí vykreslení ohraničení na pravém okraji ovládacího panelu, když bude viditelné.
CBRS_FLOAT_MULTI Umožňuje plovoucí více řídicích pruhů v jednom minirámeček okně.
CBRS_TOOLTIPS Způsobí zobrazení popisů tlačítek pro ovládací panel.
CBRS_FLYBY Způsobí aktualizaci textu zprávy ve stejnou dobu jako popisy nástrojů.
CBRS_GRIPPER Způsobí, že úchyt, podobně jako u pásů v objektu
CReBar
, bude nakreslen pro libovolnouCControlBar
-odvozenou třídu.
Poznámky
Nemá vliv na nastavení WS_ (styl okna).
CControlBar::SetBorders
Voláním této funkce nastavíte velikost ohraničení řídicího panelu.
void SetBorders(
int cxLeft = 0,
int cyTop = 0,
int cxRight = 0,
int cyBottom = 0);
void SetBorders(LPCRECT lpRect);
Parametry
cxLeft
Šířka (v pixelech) levého ohraničení ovládacího panelu
cyTop
Výška horního okraje řídicího panelu (v pixelech).
cxRight
Šířka (v pixelech) pravého ohraničení ovládacího panelu.
cyBottom
Výška (v pixelech) dolního ohraničení řídicího panelu.
lpRect
Ukazatel na objekt CRect , který obsahuje aktuální šířku (v pixelech) každého ohraničení objektu řídicího pruhu.
Příklad
Následující příklad kódu nastaví horní a dolní ohraničení řídicího pruhu na 5 pixelů a levé a pravé ohraničení na 2 pixely:
CControlBar &m_myControlBar = m_Rebar;
m_myControlBar.SetBorders(2, 5, 2, 5);
CControlBar::SetInPlaceOwner
Změní místního vlastníka řídicího panelu.
void SetInPlaceOwner(CWnd* pWnd);
Parametry
pWnd
Ukazatel na CWnd
objekt.
Poznámky
Viz také
MFC – ukázkové CTRLBARS
CWnd – třída
Graf hierarchie
CToolBar – třída
CDialogBar – třída
CStatusBar – třída
CReBar – třída