Stavy tlačítek
Tato část popisuje, jak výběr tlačítka změní jeho stav a jak má aplikace reagovat.
Část se skládá z následujících témat:
- výběru tlačítka
-
prvky stavu tlačítka
- detailního stavu
- stavu nabízení
- stavu kontroly
- změny stavu tlačítka
Výběr tlačítka
Uživatel může tlačítko vybrat třemi způsoby: tak, že na něj kliknete myší, stisknete klávesu Tabbing a stisknete klávesu ENTER nebo (pokud je toto tlačítko součástí skupiny definované stylem WS_GROUP) tak, že přejdete na vybrané tlačítko ve skupině a pomocí kláves se šipkami se přesunete v dané skupině. Dvě metody tabulátoru jsou součástí předdefinovaného rozhraní klávesnice poskytovaného systémem. Úplný popis tohoto rozhraní naleznete v tématu Dialogová okna.
Výběr tlačítka obvykle způsobuje následující události:
- Systém dává tlačítku fokus klávesnice.
- Tlačítko odešle nadřazené okno zprávu, která ji upozorní na výběr.
- Nadřazené okno (nebo systém) odešle tlačítko zprávu, která změní svůj stav.
- Nadřazené okno (nebo systém) překreslí tlačítko tak, aby odráželo jeho nový stav.
Prvky stavu tlačítka
Stav tlačítka může být charakterizován stavem fokusu, stavem nabízení a stavem kontroly.
- detailního stavu
- stavu nabízení
- stavu kontroly
Detailní stav
Stav fokusu se vztahuje na zaškrtávací políčko, přepínač, tlačítko pro stisknutí nebo tlačítko nakreslené vlastníkem. Tlačítko obdrží fokus klávesnice, když ho uživatel vybere a ztratí fokus, když uživatel vybere jiný ovládací prvek. Fokus klávesnice může mít najednou jenom jeden ovládací prvek.
Když má tlačítko fokus klávesnice, systém obvykle zvýrazní text, ikonu nebo rastrový obrázek tlačítka tím, že ho obklopí tečkovanou čárou. Tlačítko má navíc těžké tmavé ohraničení, když má fokus. Systém automaticky změní zvýraznění automatického tlačítka, ale aplikace musí změnit zvýraznění pro neautomatické tlačítko odesláním zpráv.
Stav vložení
Stav nabízení se vztahuje na tlačítko, zaškrtávací políčko, přepínač nebo třístavové zaškrtávací políčko, ale nevztahuje se na jiná tlačítka. Stav stisknutí tlačítka lze buď nasdílit, nebo ne. Při stisknutí tlačítka (nebo libovolného tlačítka se stylem BS_PUSHLIKE) je tlačítko nakresleno jako tlačítko sunkenu. Když se nenasunou, je nakreslen jako vyvýšené tlačítko. Když je zaškrtnuté políčko, přepínač nebo třístavové zaškrtávací políčko, pozadí tlačítka se zobrazí šedě. Pokud není nasdílený, pozadí tlačítka není šedé.
Zkontrolovat stav
Stav zaškrtnutí platí pro zaškrtávací políčko, přepínač nebo třístavové zaškrtávací políčko, ale nevztahuje se na jiná tlačítka. Stav může být zaškrtnut, vymazán nebo (pro zaškrtávací políčka se třemi stavy) nedeterminován. Zaškrtávací políčko je zaškrtnuté, pokud obsahuje značku zaškrtnutí a není zaškrtnuté, pokud není zaškrtnuté. Přepínač je zaškrtnut, pokud obsahuje černou tečku; pokud ne, vymaže se. Zaškrtávací políčko se třemi stavy je zaškrtnuté, pokud obsahuje značku zaškrtnutí, není zaškrtnuté, pokud není, a je neurčité, pokud obsahuje šedé pole. Systém automaticky změní stav kontroly automatického tlačítka, ale aplikace musí změnit stav kontroly neautomatické tlačítko.
Změny stavu tlačítka
Když uživatel vybere tlačítko, je obecně nutné změnit jeden nebo více prvků stavu tlačítka. Systém automaticky změní stav fokusu pro všechny typy tlačítek, stav nabízení tlačítek nebo tlačítek se stylem BS_PUSHLIKE a stav kontroly všech automatických tlačítek. Aplikace musí provádět všechny ostatní změny stavu s ohledem na typ, styl a aktuální stav tlačítka. Následující seznam obsahuje prvky stavu, které je nutné změnit pro každý typ tlačítka:
- Zaškrtávací políčko musí změnit stav zaškrtnutí.
- Přepínač musí změnit stav zaškrtnutí. Může být také nutné změnit stav kontroly jiných přepínačů ve stejné skupině, aby se zajistila vzájemně exkluzivní povaha přepínačů.
- Vzhledem k tomu, že stav tlačítka nakresleného vlastníkem závisí na aplikaci, může se změnit stav tlačítka. Není nutné měnit žádné prvky skupinového pole, protože uživatelé nemohou vybrat pole skupiny.
Aplikace může určit stav tlačítka odesláním zprávy BM_GETCHECK nebo BM_GETSTATE; aplikace může nastavit stav tlačítka odesláním zprávy BM_SETCHECK nebo BM_SETSTATE.