Sdílet prostřednictvím


O ovládacích prvcích Trackbar

Posuvná lišta je okno, které obsahuje posuvník (někdy označovaný jako palec) v drážce a volitelné značky. Když uživatel přesune posuvník pomocí myši nebo směrových kláves, panel trackbar odešle zprávy s oznámením o změně.

Trackbary jsou užitečné, pokud chcete, aby uživatel vybral diskrétní celočíselnou hodnotu bez znaménka nebo sadu po sobě jdoucích celočíselné hodnoty bez znaménka v oblasti. Můžete například použít trackbar, který uživateli umožní nastavit frekvenci opakování klávesnice přesunutím posuvníku na danou značku zaškrtnutí. Následující obrázek znázorňuje typický trackbar.

snímek obrazovky posuvníku s popisky na koncích pro pomalou a rychlou rychlost

Posuvník v trackbaru se přesune v přírůstcích, které zadáte při jeho vytvoření. Hodnoty v této oblasti se označují jako logické jednotky. Pokud například zadáte, že by měl trackbar mít logické jednotky v rozsahu od 0 do 5, posuvník může zabírat pouze šest pozic: pozici na levé straně trackbaru a jednu pozici pro každý přírůstek v rozsahu. Každá z těchto pozic je obvykle identifikována značkou zaškrtnutí; počet značek je však libovolný a může být menší než počet logických pozic.

Trackbar vytvoříte pomocí funkce CreateWindowEx určující třídu okna TRACKBAR_CLASS. Po vytvoření trackbaru můžete pomocí zpráv pro trackbar nastavit a načíst mnoho jeho vlastností. Změny, které můžete provést, zahrnují nastavení minimální a maximální polohy posuvníku, značky kreslení, nastavení rozsahu výběru a přemístění posuvníku.

Rozsah výběru

Pokud vytvoříte trackbar se stylem TBS_ENABLESELRANGE, můžete určit rozsah výběru. Trackbar zvýrazní oblast výběru a zobrazí trojúhelníkové značky na začátku a konci, jak je znázorněno na následujícím obrázku.

snímek obrazovky trackbaru se zvýrazněnou oblastí

Rozsah výběru trackbaru nijak neovlivní jeho funkčnost. Je na aplikaci, která implementuje rozsah. Můžete to udělat jedním z následujících způsobů:

  • Pomocí rozsahu výběru povolíte uživateli nastavit maximální a minimální hodnoty pro určitý parametr. Uživatel může například přesunout posuvník na pozici a potom kliknout na tlačítko s popiskem Max. Aplikace pak nastaví rozsah výběru tak, aby zobrazoval hodnoty vybrané uživatelem.
  • Omezte pohyb posuvníku na předem určený dílčí rozsah v rámci ovládacího prvku zpracováním oznámení WM_HSCROLL nebo WM_VSCROLL a zakázáním pohybu mimo tento výběrový rozsah. Můžete to udělat například v případě, že rozsah hodnot, které má uživatel k dispozici, se může změnit kvůli jiným možnostem, které uživatel provedl, nebo v závislosti na dostupných zdrojích.

Zprávy trackbaru

Logické jednotky trackbaru jsou sada souvislých hodnot, které může trackbar představovat. Obvykle se definují zadáním rozsahu možných hodnot s TBM_SETRANGE zprávou hned po vytvoření trackbaru. Aplikace mohou dynamicky měnit rozsah pomocí TBM_SETRANGE, TBM_SETRANGEMAXnebo TBM_SETRANGEMIN.

Pokud chcete načíst pozici posuvníku (tj. hodnotu, kterou uživatel zvolil), použijte TBM_GETPOS zprávu. Pokud chcete nastavit umístění posuvníku, použijte zprávu TBM_SETPOS.

Prvek TrackBar automaticky zobrazuje značky na jeho začátku a konci, pokud neurčíte styl TBS_NOTICKS. (V editoru prostředků sady Microsoft Visual Studio to znamená nastavení vlastnosti Tick Marks na False.) Styl TBS_AUTOTICKS můžete použít k automatickému zobrazení dalších značek v pravidelných intervalech podél trackbaru. Ve výchozím nastavení TBS_AUTOTICKS trackbar zobrazuje značku zaškrtnutí u každého přírůstku rozsahu trackbaru. Pokud chcete zadat jiný interval pro automatické značky, pošlete zprávu TBM_SETTICFREQ na posuvník. Tuto zprávu můžete například použít k zobrazení pouze 10 značek v rozsahu od 1 do 100.

Pokud chcete nastavit umístění jedné značky zaškrtnutí, odešlete zprávu TBM_SETTIC. Trackbar udržuje pole hodnot DWORD, které ukládají pozici každé značky. Pole neobsahuje první a poslední značky, které posuvník vytvoří automaticky. Index v tomto poli můžete zadat při odeslání TBM_GETTIC zprávy, která načte pozici odpovídající značky zaškrtnutí. Případně můžete odeslat zprávu TBM_GETPTICS, abyste získali ukazatel na pole. Počet prvků v poli je roven počtu tiků vráceného zprávou TBM_GETNUMTICS o dvě méně. Důvodem je to, že počet vrácený TBM_GETNUMTICS obsahuje první a poslední značky, které nejsou zahrnuty do pole. Chcete-li zjistit fyzickou polohu značky posuvníku v klientských souřadnicích okna trackbaru, odešlete zprávu TBM_GETTICPOS. Zpráva TBM_CLEARTICS odebere všechny značky z pásu stopy kromě prvního a posledního.

Velikost čáry trackbaru určuje, jak daleko se posuvník pohybuje v reakci na vstup klávesnice ze šipkových kláves, jako je šipka vpravo nebo ŠIPKA DOLŮ. Pokud chcete načíst nebo nastavit velikost řádku, odešlete TBM_GETLINESIZE a TBM_SETLINESIZE zprávy. Posuvník také odesílá kódy oznámení TB_LINEUP a TB_LINEDOWN do nadřazeného okna, když uživatel stiskne klávesy se šipkami.

Velikost stránky trackbaru určuje, jak daleko se posuvník přesune v reakci na vstup klávesnice, například klávesu PAGE UP nebo PAGE DOWN nebo vstup myši, například kliknutí v kanálu trackbaru. Chcete-li načíst nebo nastavit velikost stránky, odešlete zprávy TBM_GETPAGESIZE a TBM_SETPAGESIZE. Posuvník také odešle oznámení kódů TB_PAGEUP a TB_PAGEDOWN do nadřazeného okna, když obdrží vstup z klávesnice nebo myši, který posune stránku. Další informace naleznete v tématu Oznamovací zprávy posuvníku.

Aplikace může odesílat zprávy, aby načetla rozměry trackbaru. Zpráva TBM_GETTHUMBRECT načte ohraničující obdélník posuvníku. Zpráva TBM_GETTHUMBLENGTH načte délku posuvníku. Zpráva TBM_GETCHANNELRECT načte ohraničující obdélník kanálu trackbaru, což je oblast, přes kterou se posuvník přesune. Obsahuje zvýraznění při výběru rozsahu. Pokud má trackbar styl TBS_FIXEDLENGTH, můžete odeslat zprávu TBM_SETTHUMBLENGTH a změnit délku posuvníku.

Rozsah výběru můžete načíst nebo nastavit odesláním zpráv do posuvníku. Pomocí TBM_SETSEL zprávy můžete nastavit počáteční a koncovou pozici výběru. Pokud chcete nastavit jenom počáteční pozici nebo jenom koncovou pozici výběru, odešlete TBM_SETSELSTART nebo TBM_SETSELEND zprávu. Chcete-li načíst počáteční nebo koncovou pozici oblasti výběru, odešlete zprávu TBM_GETSELSTART nebo TBM_GETSELEND. Pokud chcete vymazat oblast výběru a obnovit panel stopy do původního rozsahu, odešlete zprávu TBM_CLEARSEL.

Poznámka

Je zodpovědností aplikace zajistit, aby uživatel nemohl vybrat hodnoty mimo rozsah výběru. Samotný ovládací prvek nezabrání uživateli přesunout posuvník mimo rozsah.

 

Zprávy s oznámením na panelu sledování

Posuvník upozorňuje nadřazené okno na akce uživatele odesláním zprávy WM_HSCROLL nebo WM_VSCROLL. Trackbar se stylem TBS_HORZ odesílá WM_HSCROLL zprávy. Sledovací lišta se stylem TBS_VERT odesílá zprávy WM_VSCROLL. Slovo s nízkou pořadovou hodnotou wParam parametru WM_HSCROLL nebo WM_VSCROLL obsahuje oznamovací kód. Pro kódy oznámení TB_THUMBPOSITION a TB_THUMBTRACK určuje hlavní slovo parametru wParam pozici posuvníku. Pro všechny ostatní kódy oznámení je vyšší část slova nula; odeslat zprávu TBM_GETPOS k určení polohy posuvníku. Parametr lParam je popisovač posuvníku.

Systém odešle kódy oznámení TB_BOTTOM, TB_LINEDOWN, TB_LINEUP a TB_TOP pouze v případě, že uživatel komunikuje se trackbarem pomocí klávesnice. Kódy oznámení TB_THUMBPOSITION a TB_THUMBTRACK se odesílají jenom v případech, kdy uživatel používá myš. Kódy oznámení TB_ENDTRACK, TB_PAGEDOWN a TB_PAGEUP se odesílají v obou případech. Následující tabulka uvádí kódy oznámení trackbaru a události (kódy virtuálních klíčů nebo události myši), které způsobují odesílání oznámení Virtual-Key Kódy.

Kód oznámení Důvod odeslání
TB_BOTTOM VK_END
TB_ENDTRACK WM_KEYUP (uživatel vydal klíč, který odeslal příslušný kód virtuálního klíče)
TB_LINEDOWN VK_RIGHT nebo VK_DOWN
TB_LINEUP VK_LEFT nebo VK_UP
TB_PAGEDOWN VK_NEXT (uživatel klikl na kanál níže nebo vpravo od posuvníku)
TB_PAGEUP VK_PRIOR (uživatel klikl na kanál nad nebo vlevo od posuvníku)
TB_THUMBPOSITION WM_LBUTTONUP podle kódu oznámení TB_THUMBTRACK
TB_THUMBTRACK Pohyb posuvníku (uživatel přetáhl posuvník)
TB_TOP VK_HOME

 

Výchozí zpracování zpráv posuvníku

Tato část popisuje zpracování zpráv okna prováděné trackbarem.

Zpráva Provedené zpracování
WM_CAPTURECHANGED Ukonče časovač, pokud byl během zpracování WM_LBUTTONDOWN nastaven a v případě potřeby odešle kód oznámení TB_THUMBPOSITION. Vždy odešle kód oznámení TB_ENDTRACK.
WM_CREATE Provede další inicializaci, například nastavení velikosti čáry, velikosti stránky a frekvence zaškrtnutí na výchozí hodnoty.
WM_DESTROY Uvolní prostředky.
WM_ENABLE Překreslí okno trackbaru.
WM_ERASEBKGND Vymaže pozadí okna pomocí aktuální barvy pozadí pro trackbar.
WM_GETDLGCODE Vrátí hodnotu DLGC_WANTARROWS.
WM_KEYDOWN Zpracuje směrové klíče a podle potřeby odešle kódy oznámení TB_TOP, TB_BOTTOM, TB_PAGEUP, TB_PAGEDOWN, TB_LINEUP a TB_LINEDOWN.
WM_KEYUP Odešle kód oznámení TB_ENDTRACK, pokud bylo tlačítko jedním ze směrových tlačítek.
WM_KILLFOCUS Překreslí okno trackbaru.
WM_LBUTTONDOWN Nastaví fokus a zachytávání myší na trackbar. V případě potřeby nastaví časovač, který určuje, jak rychle se posuvník přesune k kurzoru myši, když uživatel podrží tlačítko myši v okně.
WM_LBUTTONUP Uvolní zachytávání myši a ukončí časovač, pokud byl během zpracování WM_LBUTTONDOWN nastaven. V případě potřeby odešle kód oznámení TB_THUMBPOSITION. Vždy odešle kód oznámení TB_ENDTRACK.
WM_MOUSEMOVE Přesune posuvník a odešle kód oznámení TB_THUMBTRACK při sledování myši (viz WM_TIMER).
WM_PAINT Nakreslí trackbar. Pokud je parametr wParam nenulový, ovládací prvek považuje, že hodnota je HDC a maluje pomocí kontextu zařízení.
WM_SETFOCUS Překreslí okno trackbaru.
WM_SIZE Nastaví rozměry trackbaru a odebere posuvník, pokud není dostatek místa k jeho zobrazení.
WM_TIMER Načte pozici myši a aktualizuje pozici posuvníku. (Přijímá se pouze v případech, kdy uživatel přetahuje posuvník.)
WM_WININICHANGE Inicializuje rozměry posuvníku.

 

Popisky posuvníku

Panel stop vytvořený pomocí stylu TBS_TOOLTIPS má výchozí ovládací prvek popisku. Popis zůstane viditelný a zobrazí aktuální hodnotu, když uživatel přetáhne posuvník pomocí myši.

Nový ovládací prvek popisku můžete přiřadit k posuvníku odesláním zprávy TBM_SETTOOLTIPS. Pokud chcete získat popisovač k přiřazenému ovládacímu prvku tooltipu, použijte zprávu TBM_GETTOOLTIPS.