Sdílet prostřednictvím


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

CObject

CCmdTarget

CWnd

CListBox

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_NCCREATEprvku kontrolní seznam , WM_CREATEWM_NCCALCSIZEa WM_GETMINMAXINFO zprávy.

Tyto zprávy jsou zpracovávány ve výchozím nastavení OnNcCreatepomocí , OnCreate, OnNcCalcSizea 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ždy

  • WS_VISIBLE Obvykle

  • WS_DISABLED Zřídka

  • WS_VSCROLL Přidání svislého posuvníku

  • WS_HSCROLL Přidání vodorovného posuvníku

  • WS_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_OWNERVARIABLEstyl 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.

Viz také

Mfc – ukázka TSTCON
CListBox Třída
Graf hierarchie