Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
C/C++
Ovládací prvek TrackBar
winapi_logo
27. února 2003, 00.00 | Dnes se zaměříme na další ze standardních ovládacích prvků Windows, kterým bude TrackBar, tedy posuvník umožňující uživateli graficky nastavit určitou hodnotu v daném rozsahu, jako je tomu například u ovládání hlasitosti.
V tomto článku se zaměříme na další ze standardních ovládacích prvků Windows, kterým je Trackbar Control.
Aby byla aplikace používající prvek Trackbar funkční, musíme na jejím začátku - přesněji řečeno před vytvořením okna (nebo více oken) prvku Trackbar použít funkci InitCommonControlsEx podobně jako u dalších prvků obsažených v knihovně comctl32.dll. S tím také souvisí nutnost přidat pro linkování do projektu odpovídající knihovnu comctl32.lib a vložit hlavičkový soubor commctrl.h.
|
Ukázkový projekt je aplikace založená na hlavním okně dialogu. V editoru prostředků přidáme na dialog prvek Trackbar, který v okně Toolbox nalezneme pod poněkud matoucím označení Slider Control.
Nastavení vlastností v editoru prostředků
Přímo v editoru prostředků máme možnost nastavit různé vlastnosti (styly okna) Trackbaru. Řekněme si o významu některých z nich.
- Orientation - určuje orientaci, která může být ve vodorovném nebo svislém směru. Vlastnost může nabývat hodnot Horizontal nebo Vertical, což odpovídá stylům okna (které použijeme při "ručním" vytvoření) TBS_HORZ (výchozí vlatsnost) a TBS_VERT.
- Tick Marks - určuje zda je povoleno zobrazovat značky v bodech odpovídajících jednotlivým polohám nebo jejich násobkům (hustotu - krokování značek lze nastavit programově). Odpovídající stylu okna je TBS_NOTICKS, který značky zakazuje!
- Auto Ticks - pokud je nastavena na True, značky jsou zobrazeny systémem automaticky.
- Point - určuje zda se mají značky zobarzovat na obou stranách (hodnota Both) nebo pouze na levé/horní (podle orientace Trackbaru) - hodnota Top/Left či pravé/spodní - hodnota Bottom/Right. Odpovídající styly okna jsou TBS_LEFT, TBS_TOP, TBS_RIGHT a TBS_BOTTOM. Nastavení zobrazování pouze na jedné straně také způsobí změnu vzhledu jezdce, který bude na příslušné straně zobrazen do špičky.
- Tooltips - určuje zda se při tažení jezdce má zobrazovat aktuální poloha v okně tooltipu, vytvářeného a obsluhovaného systémem. Na obrázku jde o to žluté plovoucí okénko zobrazující polohu 23.
Programové ovládání Trackbaru
Jednou z prvních věcí která nás napadne, je nastavení rozsahu (v počtu logických jednotek - kroků) a dále třeba nastavení výchozí pozice. Následující funkce volaná v obsluze zprávy WM_INIDIALOG nastaví pomocí zpráv TBM_SETRANGE a TBM_SETPOS rozsah 30 logických jednotek a umístí jezdce do výchozí polohy 10.
|
Pokud povolíme zobrazování značek, máme možnost kromě automatického zobrazení zobrazit vlastní značky v libovolných místech. Systém pak automaticky zobrazí značky počátku a konce. V našem příkladě takto nastavíme dvě vlastní značky na pozice 5 a 25 pomocí funkce TBM_SETTIC.
|
Mezi základní akce s Trackbarem dále patří programové zjištění aktuálně nastavené polohy a dále okamžitá detekce změny polohy. Touto změnou polohy je zde myšlena změna aktuální hodnoty logické souřadnice která většinou neodpovídá grafickému posunutí jezdce o každý pixel, ale dojde k ní v závislosti na poměru rozsahu a velikosti okna Trackbaru obvykle skokově při posunu o určitý počet pixelů. Logickou souřadnici získáme pomocí zprávy TBM_GETPOS, jak si ukážeme za chvíli v příkladu. Pokud jde o detekci změny souřadnice, musíme zachytávat zprávu WM_HSCROLL v případě horizontálního Trackbaru nebo WM_VSCROLL u svislého Trackbaru. Ukážeme si to na následujícím příkladě. Cílem bude detekovat změnu polohy a v případě že se uživatel dostane mimo rozsah dříve nastavených bodů (pozice 5 a 25) změníme ikonu na dialogu na systémovou ikonu "chyba" (IDI_ERROR). Při opětném návratu do "správných mezí" opět vrátíme ikonu na vlastní ikonu aplikace. Nastavení ikony provedeme pomocí zprávy STM_SETIMAGE prvku static, což je v editoru prostředků prvek Picture Control typu Icon. Navíc při pohybu v zakázané oblasti přehrajeme varovný zvuk - zde pro jednoduchost pomocí funkce MessageBeep. Takto bude tedy vypadat funkce realizující uvedenou kontrolu mezí a procedura dialogu, ze které jsou také volány ostatní výše uvedené funkce.
|
Zde si můžete stáhnout doprovodný projekt (Visual C++ .NET) včetně spustitelné verze v release sestavení: trackbar.zip (32 kB);.
Obsah seriálu (více o seriálu):
- Učíme se Win API - motivační úvod
- Učíme se WinAPI - Začínáme
- Učíme se WinAPI - 3.
- Učíme se Win API - 4.
- Učíme se Win API - 5.
- Učíme se Win API - 6.
- Učíme se Win API - 7.
- Učíme se Win API - 8
- Učíme se Win API - 9.
- Učíme se Win API - 10.
- Učíme se Win API - 11.
- Učíme se Win API - 12.
- Učíme se Win API - 13.
- Učíme se Win API - 14.
- Učíme se Win API - 15.
- Učíme se Win API - 16.
- Učíme se Win API - 17.
- Učime se Win API - 18.
- Učime se Win API - 19.
- Učime se Win API - 20.
- Učime se Win API - 21.
- Učime se Win API - 22.
- Učime se Win API - 23.
- Učime se Win API - 24.
- Učíme se Win API - 25.
- Učíme se Win API - 26.
- Učíme se Win API - 27.
- Učíme se Win API - 28.
- Učíme se Win API - uživatelsky kreslený ListBox
- Učíme se Win API - uživatelsky kreslený ListBox II
- Dialog výběru složky a naplnění ListBoxu soubory
- Vyhledávání souborů - zjištění obsahu složky
- Pracujeme s ComboBoxem ve WinAPI
- Pracujeme s ComboBoxem II.
- Rozšířený prvek ComboBoxEx
- Ovládací prvek TrackBar
- Ovládací prvek Progress Bar
Diskuse k článku
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007