TN031: Ovládací pruhy
[!POZNÁMKA]
Následující technická poznámka nebyla aktualizována, protože byla poprvé zahrnuta v dokumentaci online.V důsledku toho některé postupy a témata mohou být nesprávné nebo zastaralé.Pro nejnovější informace je vhodné vyhledat téma zájmu v dokumentaci online index.
Tato poznámka popisuje ovládací panel třídy v MFC: Obecné CControlBar, CStatusBar, CToolBar, CDialogBar, a CDockBar.
CControlBar
A ControlBar je CWnd-odvozené třídy, který:
Je zarovnán k hornímu nebo dolnímu okraji okna rámce.
Může obsahovat podřízené položky, které jsou buď založené HWND ovládacích prvků (například CDialogBar) nebo non-HWND na základě položek (například CToolBar, CStatusBar).
Ovládací panely podporují další styly:
CBRS_TOP(Výchozí) připnout na horní ovládací panel.
CBRS_BOTTOMOvládací panel do dolní části kódu PIN.
CBRS_NOALIGNKdyž se změní velikost nadřazený není přemístit ovládací panel.
Třídy odvozené z CControlBar poskytují implementaci zajímavější:
CStatusBarStavový řádek, položky jsou podokna stavu panel obsahující text.
CToolBarNa panelu nástrojů položky jsou tlačítka rastrový obrázek zarovnán v řádku.
CDialogBarRámec podobných nástrojů Standardní windows obsahující ovládací prvky (vytvořené z dialogovou šablonu zdroje).
CDockBar A všeobecné oblasti ukotvení v jiných CControlBar odvozené objekty.Zvláštní členské funkce a proměnné, které jsou k dispozici v této třídě jsou pravděpodobně v budoucích verzích změnit.
Všechny ovládací panel objekty a windows budou podřízených oken některé nadřazené okno rámce.Na stejné úrovni jako jsou obvykle přidány do oblasti klienta rámce (například klienta MDI nebo zobrazení).ID podřízené okno Ovládací panel je důležité.Výchozí rozložení ovládacího panelu lze použít pouze pro ovládací panely s ID v rozsahu od AFX_IDW_CONTROLBAR_FIRST k AFX_IDW_CONTROLBAR_LAST.Všimněte si, že i když je celá řada 256 ovládací panel ID, první 32 tyto ovládací panel ID jsou speciální vzhledem k tomu, že jsou přímo podporovány architektura náhledu.
CControlBar Třída poskytuje standardní implementaci:
Ovládací panel na horní, dolní nebo obou stranách rámečku zarovnání.
Přidělení položky pole ovládacího prvku.
Podpora provádění odvozených tříd.
C++ ovládací panel objekty budou vloženy obvykle jako členové CFrameWnd odvozené třídy a kdy budou vyčištěny nadřazený HWND a jsou zničeny objektu.Pokud potřebujete přidělit objekt ovládacího prvku panel na haldě, můžete jednoduše nastavit m_bAutoDestruct člen TRUE Chcete-li ovládací panel "Odstranit tuto" Když HWND zničen.
[!POZNÁMKA]
Pokud vytvoříte vlastní CControlBar-odvozené třídy, nikoli pomocí jednoho z knihovny MFC, jako odvozené třídy, CStatusBar, CToolBar, nebo CDialogBar, je nutné nastavit m_dwStyle datový člen.To lze provést v přepsané vytvořit:
// CMyControlBar is derived from CControlBar
BOOL CMyControlBar::Create( CWnd* pParentWnd, DWORD dwStyle, UINT nID )
{
m_dwStyle = dwStyle;
.
.
.
}
Algoritmus rozložení ovládací panel
Ovládací panel rozložení algoritmus je velmi jednoduché.Okno rámce odešle zprávu WM_SIZEPARENT pro všechny děti v oblasti ovládací panel.A tato zpráva je předán ukazatel na obdélník klienta od rodičů.Tato zpráva je odeslána děti v pořadí vykreslování.Ovládací panel děti tyto informace použít k samotné umístění a chcete-li zmenšit velikost oblasti klienta nadřazeného prvku.Konečné obdélník, který je ponechán pro běžné klientské oblasti (menší ovládací panely) umožňuje umístit hlavní okno klienta (obvykle klienta, zobrazení nebo rozdělovač okno MDI).
Viz CWnd::RepositionBars a CFrameWnd::RecalcLayout další podrobnosti.
MFC soukromé zprávy systému Windows, včetně WM_SIZEPARENT, jsou popsány v Technická poznámka: 24.
CStatusBar
Stavový řádek je ovládací panel, který obsahuje řádek textu výstup podoken.Existují dva běžné způsoby použití podoken výstup textu:
Jako řádek zprávy
(například standardní nabídky Nápověda řádek zprávy).Obvykle tyto přistupuje na 0 založený indexovány
Jako ukazatele stavu
(například CAP, NUM a SCRL ukazatele).Jsou obvykle přístupné podle ID řetězce (spuštění příkazu).
Písmo na stavový řádek je bod 10 MS Sans Serif (dáno průvodci návrhem aplikace systému Windows rozhraní nebo písmo mappers nejvhodnější Švýcarské proporcionální písma 10 bodů).V některých verzích systému Windows, jako je například japonská verze se liší písma zaškrtnuto.
Barvy použité na stavovém řádku jsou také v souladu s doporučením Průvodce návrhem aplikace rozhraní systému Windows.Tyto barvy nejsou pevně zakódovanou a změní dynamicky v reakci na vlastní nastavení uživatele v okně Ovládací panely.
Položka |
Hodnota barvy Windows |
Výchozí RGB |
---|---|---|
Stav panel pozadí |
COLOR_BTNFACE |
RGB (192, 192, 192) |
Text stavového řádku |
COLOR_BTNTEXT |
RGB (000, 000, 000) |
Stavový řádek horního nebo levého okraje |
COLOR_BTNHIGHLIGHT |
RGB (255, 255, 255) |
Stavový řádek bot nebo pravé okraje |
COLOR_BTNSHADOW |
RGB (128, 128, 128) |
CCmdUI podpora CStatusBar
Indikátory jsou obvykle aktualizovány způsob je prostřednictvím ON_UPDATE_COMMAND_UI mechanismus.V nečinnosti, bude volat na stavovém řádku ON_UPDATE_COMMAND_UI rutiny s ID řetězce panelu indikátor.
ON_UPDATE_COMMAND_UI Můžete volat rutiny:
Povolit: povolení nebo zakázání podokna.Zakázáno podokno vypadá přesně jako povoleno podokno zůstává neviditelný text (tedy vypne indikátor text).
SetText: Chcete-li změnit text.Buďte opatrní, pokud používáte to vzhledem k tomu, že v podokně nepřizpůsobuje automaticky.
Odkazovat na třídu CStatusBar v Knihovny tříd podrobnosti o CStatusBar vytváření a přizpůsobení rozhraní API.Většinu úpravy stavových řádků by měl provést, před stavový řádek je nejprve zviditelnit.
Na stavovém řádku podporuje pouze jedno podokno pružně roztáhnout, obvykle do prvního podokna.Velikost tohoto podokna je opravdu minimální velikost.Na stavovém řádku je menší než minimální velikost všech podoken, věnuje extra šířku podokna pružně roztáhnout.Výchozí aplikace se stavovým řádkem má zarovnaný vpravo ukazatele pro SZP, NUM a SCRL, protože je pružně Roztáhnout do prvního podokna.
CToolBar
Panel nástrojů je ovládací panel s řádek tlačítek rastrový obrázek, který může obsahovat oddělovače.Jsou podporovány dva styly tlačítek: tlačítek a tlačítek zaškrtávací políčko.Funkce rádia skupiny mohou být vytvořeny tlačítek zaškrtávací políčko a ON_UPDATE_COMMAND_UI.
Rastrový obrázek tlačítka na panelu nástrojů jsou převzaty z jednoho rastrového obrázku.Tento rastrový obrázek musí obsahovat jeden obrázek nebo piktogram pro každé tlačítko.Pořadí obrázků/glyfy v rastru je obvykle stejné pořadí, ve kterém bude být vykreslování na obrazovce. (Lze změnit pomocí rozhraní API pro vlastní nastavení.)
Každé tlačítko musí mít stejnou velikost.Výchozí hodnota je standardní 24 x 22 pixelů.Každý obraz piktogramy musí mít stejnou velikost a musí být vedle sebe v rastru.Výchozí velikost obrazu/glyf je 16 x 15 pixelů.U nástrojů s 10 tlačítky (pomocí standardních velikostí), musíte proto rastrového obrázku, který je 160 pixelů a 15 pixelů.
Každé tlačítko má pouze jeden obrázek/glyfů.Uvádí jiné tlačítko a styly (například stisknutí klávesy nahoru, dolů, zakázán, dolů, neurčitou zakázána) algorithmically jsou generovány z jednoho obrazu/glyfů.Teoreticky lze použít libovolný barevný rastrový obrázek nebo DIB.Algoritmus pro generování jiné tlačítko státy funguje nejlépe Pokud je původní obraz odstíny šedé.Podívejte se na panelu nástrojů Standardní tlačítka a kliparty nástrojů tlačítko, uvedené v ukázce knihovny MFC Obecné CLIPART příklady.
Barvy použité v panelu nástrojů jsou také v souladu s doporučením Průvodce návrhem aplikace rozhraní systému Windows.Tyto barvy nejsou pevně zakódovanou a změní dynamicky v reakci na vlastní nastavení uživatele v okně Ovládací panely.
Položka |
Hodnota barvy Windows |
Výchozí RGB |
---|---|---|
Pozadí panelu nástrojů |
COLOR_BTNFACE |
RGB(192,192,192) |
Horní nebo levé okraje tlačítka na panelu nástrojů |
COLOR_BTNHIGHLIGHT |
RGB(255,255,255) |
Bot nebo pravé okraje tlačítka na panelu nástrojů |
COLOR_BTNSHADOW |
RGB(128,128,128) |
Navíc rastrového obrázku tlačítka panelu nástrojů jsou obarveny, jako by byly standardní tlačítka Windows.Tento přebarvení dochází při načítání bitmapy z prostředku a v reakci na změny v systémových barev v reakci na vlastní nastavení uživatele v ovládacím panelu.Následujících barev rastrového obrázku panelu nástrojů bude přebarveny automaticky, takže je třeba používat opatrně.Pokud si nepřejete mít část rozlišení rastru obarveny, pak použijte barvu, která se blíží jedné mapované hodnoty RGB.Mapování se provádí na základě přesných hodnot RGB.
Hodnota RGB |
Dynamické mapování hodnoty barvy |
---|---|
RGB (000, 000, 000) |
COLOR_BTNTEXT |
RGB (128, 128, 128) |
COLOR_BTNSHADOW |
RGB (192, 192, 192) |
COLOR_BTNFACE |
RGB (255, 255, 255) |
COLOR_BTNHIGHLIGHT |
Odkazovat na třídu CToolBarKnihovny tříd podrobnosti o CToolBar vytváření a přizpůsobení rozhraní API.Většina vlastního nastavení panelů nástrojů se provádí před panel nástrojů je nejprve zviditelnit.
Přizpůsobení rozhraní API lze použít k nastavení tlačítko ID, styly, Šířka mezery a které obraz glyfů pro tlačítka, které.Ve výchozím nastavení není nutné použití těchto rozhraní API.
CCmdUI podporu pro CToolBar
Je způsob tlačítek panelu nástrojů jsou vždy aktualizovány až ON_UPDATE_COMMAND_UI mechanismus.V nečinnosti, bude panel nástrojů volat ON_UPDATE_COMMAND_UI rutiny s ID příkazu popř.ON_UPDATE_COMMAND_UInení jen pro oddělovače, ale se nazývá tlačítek a tlačítek zaškrtávací políčko.
ON_UPDATE_COMMAND_UI Můžete volat rutiny:
Povolit: Chcete-li povolit nebo zakázat použití tlačítka.Tato metoda funguje stejně pro políčko tlačítek a tlačítek.
SetCheck: Chcete-li nastavit stav zaškrtnutí tlačítka.Tato výzva k tlačítku panelu nástrojů změnit i na tlačítko zaškrtávací políčko.SetCheckpřebírá parametr, který může být 0 (neoznačené), 1 (zaškrtnuto) nebo 2 (neurčitý)
SetRadio: Zkratky pro SetCheck.
Zaškrtnutí políčka tlačítka jsou tlačítka, zaškrtávací políčko "AUTO"; To znamená když uživatel stiskne je jejich bude okamžitě stav změnit.Kontrolována je mimo provoz nebo stisknuté státu.Neexistuje žádný způsob předdefinované uživatelské rozhraní změnit tlačítko do stavu "neurčité"; že je třeba provést prostřednictvím kódu.
Vlastní nastavení rozhraní API vám umožní změnit stav daného tlačítka, pokud možno měli změnit tyto státy v ON_UPDATE_COMMAND_UI popisovač příkazu představuje tlačítko na panelu nástrojů.Nezapomeňte, že zpracování nečinné změní stav tlačítka panelu nástrojů se ON_UPDATE_COMMAND_UI obslužnou rutinu, takže všechny změny těchto států prostřednictvím SetButtonStyle může získat ztracené po další nečinnosti.
Tlačítka odešle WM_COMMAND zprávy jako běžná tlačítka nebo položky nabídky a jsou obvykle ovládány ON_COMMAND obslužnou rutinu ve stejné třídě, která poskytuje ON_UPDATE_COMMAND_UI obslužnou rutinu.
Existují čtyři nástrojů tlačítko styly (TBBS_ hodnoty) pro zobrazení státy:
TBBS_CHECKED: je nyní zaškrtnuto políčko (dolů).
TBBS_INDETERMINATE: zaškrtávací políčko je momentálně neurčitá.
TBBS_DISABLED: Tlačítko je nyní zakázána.
TBBS_PRESSED: Aktuálně stisknutí tlačítka.
Šest oficiální Průvodce návrhem aplikace systému Windows rozhraní tlačítko styly představují následující hodnoty TBBS:
Až = 0
Myš dolů = TBBS_PRESSED (| jiný styl)
DISABLED = TBBS_DISABLED
Dolů = TBBS_CHECKED
Dolů zakázáno = TBBS_CHECKED | TBBS_DISABLED
Neurčitý = TBBS_INDETERMINATE
CDialogBar
Panel dialogového okna je ovládací panel, který obsahuje standardní ovládací prvky systému Windows.Funguje podobně jako dialogové okno, v tom obsahuje ovládací prvky a podporuje procházení mezi nimi pomocí tabulátoru.Také funguje jako dialogové okno v tom, že šablonu dialogové okno se používá k reprezentaci panelu.
A CDialogBar se používá pro náhled tisku nástrojů, který obsahuje standardní ovládací prvky tlačítkem.
Použití CDialogBar je podobné jako použití CFormView.Je nutné definovat šablonu dialogové okno pro panel dialogového okna a odstranit všechny styly, s výjimkou WS_CHILD.Všimněte si, že nesmí být dialogovém okně viditelné.
Oznámení řízení CDialogBar budou odeslány s nadřazeným ovládacím panelu (stejně jako tlačítka na panelu nástrojů).
CCmdUI podpora CDialogBar
Tlačítka na panelu dialogového okna by měla být aktualizována prostřednictvím ON_UPDATE_COMMAND_UI mechanismus obslužné rutiny.V době nečinnosti, bude panel dialogového okna volat ON_UPDATE_COMMAND_UI rutiny s ID příkazu všechny tlačítka s Identifikátorem >= 0x8000 (tj v rozsahu ID příkazů).
ON_UPDATE_COMMAND_UI Můžete volat rutiny:
Povolení: Chcete-li povolit nebo zakázat tlačítko.
SetText: Chcete-li změnit text tlačítka.
Vlastní nastavení lze provést prostřednictvím Správce oken standardní rozhraní API.