CCheckListBox
Třída
Poskytuje funkce zaškrtávacího seznamu systému Windows.
Syntaxe
class CCheckListBox : public CListBox
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CCheckListBox::CCheckListBox |
CCheckListBox Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
CCheckListBox::Create |
Vytvoří kontrolní seznam systému Windows a připojí ho k objektu CCheckListBox . |
CCheckListBox::DrawItem |
Volá se podle architektury, když se změní vizuální aspekt seznamu pro kreslení vlastníka. |
CCheckListBox::Enable |
Povolí nebo zakáže položku zaškrtávacího seznamu. |
CCheckListBox::GetCheck |
Získá stav zaškrtávacího políčka položky. |
CCheckListBox::GetCheckStyle |
Získá styl zaškrtávacích políček ovládacího prvku. |
CCheckListBox::IsEnabled |
Určuje, zda je položka povolená. |
CCheckListBox::MeasureItem |
Volá se rozhraním při vytvoření seznamu se stylem kreslení vlastníka. |
CCheckListBox::OnGetCheckPosition |
Volá se rozhraním pro získání pozice zaškrtávacího políčka položky. |
CCheckListBox::SetCheck |
Nastaví stav zaškrtávacího políčka položky. |
CCheckListBox::SetCheckStyle |
Nastaví styl zaškrtávacích políček ovládacího prvku. |
Poznámky
Zaškrtávací seznam zobrazuje seznam položek, například názvy souborů. Každá položka v seznamu má vedle sebe zaškrtávací políčko, které může uživatel zaškrtnout nebo zrušit.
CCheckListBox
je určen pouze pro ovládací prvky nakreslené vlastníkem, protože seznam obsahuje více než textové řetězce. V nejjednodušším případě zaškrtávací seznam obsahuje textové řetězce a zaškrtávací políčka, ale nemusíte mít vůbec text. Můžete mít například seznam malých rastrových obrázků se zaškrtávacím políčku vedle každé položky.
Chcete-li vytvořit vlastní kontrolní seznam, musíte odvodit vlastní třídu z CCheckListBox
. Chcete-li odvodit vlastní třídu, napište konstruktor pro odvozenou třídu a potom volání Create
.
Pokud chcete zpracovávat zprávy oznámení systému Windows odeslané seznamem do nadřazeného seznamu (obvykle třídy odvozené z CDialog
), přidejte pro každou zprávu položku mapování zpráv a členovou funkci obslužné rutiny zpráv.
Každá položka mapy zpráv má následující tvar:
ON_Notification ( id
, memberFxn
)
kde id
určuje ID podřízeného okna ovládacího prvku odesílajícího oznámení a memberFxn
je název nadřazené členské funkce, kterou jste napsali pro zpracování oznámení.
Prototyp funkce nadřazeného objektu je následující:
afx_msg void memberFxn();
Existuje pouze jedna položka mapy zpráv, která se týká konkrétně CCheckListBox
(ale viz také položky mapy zpráv pro CListBox
):
ON_CLBN_CHKCHANGE
Uživatel změnil stav zaškrtávacího políčka položky.
Pokud je zaškrtávacím seznamem výchozí zaškrtávací seznam (seznam řetězců s výchozími zaškrtávacími políčky nalevo od každého), můžete zaškrtávací seznam nakreslit pomocí výchozího CCheckListBox::DrawItem
políčka. V opačném případě je nutné přepsat CListBox::CompareItem
funkci a CCheckListBox::DrawItem
funkce a CCheckListBox::MeasureItem
funkce.
Kontrolní seznam můžete vytvořit buď ze šablony dialogového okna, nebo přímo v kódu.
Hierarchie dědičnosti
CCheckListBox
Požadavky
Záhlaví: afxwin.h
CCheckListBox::CCheckListBox
CCheckListBox
Vytvoří objekt.
CCheckListBox();
Poznámky
Objekt vytvoříte CCheckListBox
ve dvou krocích. Nejprve definujte třídu odvozenou z CCheckListBox
, pak volání Create
, která inicializuje zaškrtávací seznam Systému Windows a připojí jej k objektu CCheckListBox
.
Příklad
CCheckListBox myCheckListBox;
myCheckListBox.Create(LBS_HASSTRINGS | LBS_OWNERDRAWFIXED,
CRect(10, 10, 100, 100), this, IDC_MYCHECKLISTBOX);
CCheckListBox::Create
Vytvoří kontrolní seznam systému Windows a připojí ho k objektu CCheckListBox
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parametry
dwStyle
Určuje styl zaškrtávacího seznamu. Styl musí být LBS_HASSTRINGS
a buď LBS_OWNERDRAWFIXED
(všechny položky v seznamu mají stejnou výšku), nebo LBS_OWNERDRAWVARIABLE
(položky v seznamu mají různé výšky). Tento styl lze kombinovat s jinými styly seznamu s výjimkou LBS_USETABSTOPS
.
rect
Určuje velikost a umístění zaškrtávacího políčka. Může to být CRect
objekt nebo RECT
struktura.
pParentWnd
Určuje nadřazené okno zaškrtávacího seznamu (obvykle CDialog
objekt). Nesmí mít hodnotu NULL.
nID
Určuje ID ovládacího prvku kontrolního seznamu.
Návratová hodnota
Nenulové, pokud je úspěšné; jinak 0.
Poznámky
Objekt vytvoříte CCheckListBox
ve dvou krocích. Nejprve definujte třídu odvozenou z CcheckListBox
a potom volání Create
, která inicializuje zaškrtávací seznam Systému Windows a připojí jej k CCheckListBox
. Podívejte se CCheckListBox::CCheckListBox
na ukázku.
Při Create
spuštění systém Windows odešle ovládacímu WM_NCCREATE
prvku kontrolní seznam , WM_CREATE
WM_NCCALCSIZE
a WM_GETMINMAXINFO
zprávy.
Tyto zprávy jsou zpracovávány ve výchozím nastavení OnNcCreate
pomocí , OnCreate
, OnNcCalcSize
a OnGetMinMaxInfo
členské funkce v CWnd
základní třídě. Chcete-li rozšířit výchozí zpracování zpráv, přidejte mapu zpráv do odvozené třídy a přepište předchozí členské funkce obslužné rutiny zpráv. Přepsat OnCreate
, například provést potřebné inicializace pro novou třídu.
U ovládacího prvku kontrolního seznamu použijte následující styly oken:
WS_CHILD
VždyWS_VISIBLE
ObvykleWS_DISABLED
ZřídkaWS_VSCROLL
Přidání svislého posuvníkuWS_HSCROLL
Přidání vodorovného posuvníkuWS_GROUP
Seskupení ovládacích prvkůWS_TABSTOP
Povolení tabbingu na tento ovládací prvek
CCheckListBox::DrawItem
Volá se podle architektury, když se změní vizuální aspekt zaškrtávacího seznamu nakresleného vlastníkem.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parametry
lpDrawItemStruct
Dlouhý ukazatel na DRAWITEMSTRUCT
strukturu, která obsahuje informace o typu požadovaného výkresu.
Poznámky
itemState
Členové itemAction
struktury definují akci výkresuDRAWITEMSTRUCT
, která se má provést.
Ve výchozím nastavení tato funkce nakreslí výchozí seznam zaškrtávacích políek, který se skládá ze seznamu řetězců, z nichž každý má zaškrtávací políčko výchozí velikosti vlevo. Velikost seznamuzaškrtávacích Create
Přepište tuto členovou funkci tak, aby implementovali kreslení zaškrtávacích políček vlastník-draw, která nejsou výchozím nastavením, jako jsou zaškrtávací seznamy se seznamy, které nejsou řetězci, s položkami s proměnlivou výškou nebo zaškrtávacími políčky, které nejsou vlevo. Aplikace by měla obnovit všechny objekty rozhraní grafického zařízení (GDI) vybrané pro kontext zobrazení zadaný lpDrawItemStruct
před ukončením této členské funkce.
Pokud položky zaškrtávacího seznamu nejsou všechny stejné výšky, musí být LBS_OWNERVARIABLE
styl zaškrtávacího seznamu (zadaný v Create
) a je nutné přepsat MeasureItem
funkci.
CCheckListBox::Enable
Voláním této funkce povolíte nebo zakážete položku zaškrtávacího seznamu.
void Enable(
int nIndex,
BOOL bEnabled = TRUE);
Parametry
nIndex
Index položky zaškrtávacího seznamu, která se má povolit.
bEnabled
Určuje, jestli je položka povolená nebo zakázaná.
CCheckListBox::GetCheck
Načte stav zadaného zaškrtávacího políčka.
int GetCheck(int nIndex);
Parametry
nIndex
Index založený na nule zaškrtávacího políčka, které je obsaženo v seznamu.
Návratová hodnota
Stav zadaného zaškrtávacího políčka. V následující tabulce jsou uvedeny možné hodnoty.
Hodnota | Popis |
---|---|
BST_CHECKED |
Zaškrtávací políčko je zaškrtnuté. |
BST_UNCHECKED |
Zaškrtávací políčko není zaškrtnuté. |
BST_INDETERMINATE |
Stav zaškrtávacího políčka je neurčitý. |
CCheckListBox::GetCheckStyle
Voláním této funkce získáte styl zaškrtávacího seznamu.
UINT GetCheckStyle();
Návratová hodnota
Styl zaškrtávacích políček ovládacího prvku.
Poznámky
Informace o možných stylech naleznete v tématu SetCheckStyle
.
CCheckListBox::IsEnabled
Voláním této funkce určíte, zda je položka povolená.
BOOL IsEnabled(int nIndex);
Parametry
nIndex
Index položky
Návratová hodnota
Nenulové, pokud je položka povolena; jinak 0.
CCheckListBox::MeasureItem
Volá se rozhraním při vytvoření zaškrtávacího seznamu s nedefaultním stylem.
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
Parametry
lpMeasureItemStruct
Dlouhý ukazatel na MEASUREITEMSTRUCT
strukturu.
Poznámky
Ve výchozím nastavení tato členová funkce nic nedělá. Přepište tuto členovou funkci a vyplňte MEASUREITEMSTRUCT
strukturu, aby systém Windows informoval o rozměrech položek kontrolního seznamu. Pokud je zaškrtávací seznam vytvořen se stylem LBS_OWNERDRAWVARIABLE
, rozhraní volá tuto členovou funkci pro každou položku v seznamu. V opačném případě je tento člen volána pouze jednou.
CCheckListBox::OnGetCheckPosition
Architektura volá tuto funkci, aby získala pozici a velikost zaškrtávacího políčka v položce.
virtual CRect OnGetCheckPosition(
CRect rectItem,
CRect rectCheckBox);
Parametry
rectItem
Umístění a velikost položky seznamu.
rectCheckBox
Výchozí umístění a velikost zaškrtávacího políčka položky
Návratová hodnota
Umístění a velikost zaškrtávacího políčka položky.
Poznámky
Výchozí implementace vrátí pouze výchozí pozici a velikost zaškrtávacího políčka (rectCheckBox
). Ve výchozím nastavení je zaškrtávací políčko zarovnané v levém horním rohu položky a je standardní velikost zaškrtávacího políčka. Můžou existovat případy, kdy chcete, aby se zaškrtávací políčka na pravé straně zobrazovala, nebo chcete mít větší nebo menší zaškrtávací políčko. V těchto případech přepište OnGetCheckPosition
, pokud chcete změnit umístění a velikost zaškrtávacího políčka v rámci položky.
CCheckListBox::SetCheck
Nastaví stav zadaného zaškrtávacího políčka.
void SetCheck(
int nIndex,
int nCheck);
Parametry
nIndex
Index založený na nule zaškrtávacího políčka, které je obsaženo v seznamu.
nCheck
Stav tlačítka pro zadané zaškrtávací políčko. Možné hodnoty najdete v části Poznámky.
Poznámky
Následující tabulka uvádí možné hodnoty parametru nCheck
.
Hodnota | Popis |
---|---|
BST_CHECKED |
Zaškrtněte zadané políčko. |
BST_UNCHECKED |
Zrušte zaškrtnutí zadaného políčka. |
BST_INDETERMINATE |
Nastavte zadaný stav zaškrtávacího políčka na neurčité. Tento stav je k dispozici pouze v případě, že je BS_AUTO3STATE styl zaškrtávacího políčka nebo BS_3STATE . Další informace naleznete v tématu Styly tlačítek. |
CCheckListBox::SetCheckStyle
Voláním této funkce nastavíte styl zaškrtávacích políček v zaškrtávacím seznamu.
void SetCheckStyle(UINT nStyle);
Parametry
nStyle
Určuje styl zaškrtávacích políček v zaškrtávacím seznamu.
Poznámky
Platné styly jsou:
BS_CHECKBOX
BS_AUTOCHECKBOX
BS_AUTO3STATE
BS_3STATE
Informace o těchto stylech najdete v tématu Styly tlačítek.