Класс CCheckListBox
Предоставляет функции поля со списком Windows.
Синтаксис
class CCheckListBox : public CListBox
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CCheckListBox::CCheckListBox |
Формирует объект CCheckListBox . |
Открытые методы
Имя | Описание |
---|---|
CCheckListBox::Create |
Создает флажок Windows и присоединяет его к объекту CCheckListBox . |
CCheckListBox::DrawItem |
Вызывается платформой при изменении визуального аспекта поля списка "Рисование владельца". |
CCheckListBox::Enable |
Включает или отключает элемент флажка. |
CCheckListBox::GetCheck |
Возвращает состояние флажка элемента. |
CCheckListBox::GetCheckStyle |
Возвращает стиль флажков элемента управления. |
CCheckListBox::IsEnabled |
Определяет, включен ли элемент. |
CCheckListBox::MeasureItem |
Вызывается платформой при создании поля списка с стилем рисования владельца. |
CCheckListBox::OnGetCheckPosition |
Вызывается платформой, чтобы получить положение флажка элемента. |
CCheckListBox::SetCheck |
Задает состояние флажка элемента. |
CCheckListBox::SetCheckStyle |
Задает стиль флажков элемента управления. |
Замечания
В поле "Флажок" отображается список элементов, таких как имена файлов. Каждый элемент в списке имеет флажок рядом с ним, который пользователь может проверить или очистить.
CCheckListBox
используется только для элементов управления, нарисованных владельцем, так как список содержит больше текстовых строк. На самом простом этапе флажок содержит текстовые строки и флажки, но не нужно вообще иметь текст. Например, у вас может быть список небольших растровых изображений с флажками рядом с каждым элементом.
Чтобы создать собственный флажок, необходимо наследовать собственный класс.CCheckListBox
Чтобы получить собственный класс, напишите конструктор для производного класса, а затем вызовите Create
.
Если вы хотите обрабатывать сообщения уведомлений Windows, отправляемые полем списка его родительскому элементу (как правило, классу, производным от CDialog
), добавьте запись карты сообщений и функцию-обработчик сообщения в родительский класс для каждого сообщения.
Каждая запись карты сообщений принимает следующую форму:
ON_Notification ( id
, memberFxn
)
где id
указывает идентификатор дочернего окна элемента управления, отправляющего уведомление, и memberFxn
является именем родительской функции-члена, записанной для обработки уведомления.
Прототип функции родительского объекта выглядит следующим образом:
afx_msg void memberFxn();
Существует только одна запись карты сообщений, относящаяся специально CCheckListBox
к (но см. также записи карты сообщений для CListBox
):
ON_CLBN_CHKCHANGE
Пользователь изменил состояние флажка элемента.
Если флажок по умолчанию является флажком по умолчанию (список строк с флажками по умолчанию слева от каждого), можно использовать по умолчанию CCheckListBox::DrawItem
для рисования флажка. В противном случае необходимо переопределить функцию CListBox::CompareItem
и CCheckListBox::DrawItem
CCheckListBox::MeasureItem
функции.
Флажок можно создать из шаблона диалогового окна или непосредственно в коде.
Иерархия наследования
CCheckListBox
Требования
Заголовок: afxwin.h
CCheckListBox::CCheckListBox
Формирует объект CCheckListBox
.
CCheckListBox();
Замечания
Вы создаете CCheckListBox
объект на двух шагах. Сначала определите класс, производный от CCheckListBox
, а затем вызов Create
, который инициализирует флажок Windows и присоединяет его к объекту CCheckListBox
.
Пример
CCheckListBox myCheckListBox;
myCheckListBox.Create(LBS_HASSTRINGS | LBS_OWNERDRAWFIXED,
CRect(10, 10, 100, 100), this, IDC_MYCHECKLISTBOX);
CCheckListBox::Create
Создает флажок Windows и присоединяет его к объекту CCheckListBox
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Параметры
dwStyle
Задает стиль флажка. Стиль должен быть и либо LBS_HASSTRINGS
LBS_OWNERDRAWFIXED
(все элементы в списке имеют одинаковую высоту) или LBS_OWNERDRAWVARIABLE
(элементы в списке имеют разные высоты). Этот стиль можно сочетать с другими стилями списка, кроме LBS_USETABSTOPS
.
rect
Задает размер и позицию флажка. Может быть CRect
объектом или структурой RECT
.
pParentWnd
Указывает родительское окно флажка (обычно CDialog
объект). Он не должен иметь значение NULL.
nID
Указывает идентификатор элемента управления флажка.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Вы создаете CCheckListBox
объект на двух шагах. Сначала определите класс, производный от CcheckListBox
этого, а затем вызовCreate
, который инициализирует флажок Windows и присоединяет его к .CCheckListBox
См CCheckListBox::CCheckListBox
. пример.
При Create
выполнении Windows отправляет элементы WM_NCCALCSIZE
WM_NCCREATE
WM_CREATE
управления контрольным списком и сообщения , а также WM_GETMINMAXINFO
сообщения.
Эти сообщения обрабатываются по умолчанию функциями OnNcCreate
, OnCreate
OnNcCalcSize
и OnGetMinMaxInfo
членами в базовом CWnd
классе. Чтобы расширить обработку сообщений по умолчанию, добавьте карту сообщений в производный класс и переопределите предыдущие функции члена обработчика сообщений. Переопределите OnCreate
, например, чтобы выполнить необходимую инициализацию для нового класса.
Примените следующие стили окон к элементу управления контрольного списка:
WS_CHILD
ВсегдаWS_VISIBLE
ОбычноWS_DISABLED
РедкоWS_VSCROLL
Добавление вертикальной полосы прокруткиWS_HSCROLL
Добавление горизонтальной полосы прокруткиWS_GROUP
Группирование элементов управленияWS_TABSTOP
Разрешение табуляции для этого элемента управления
CCheckListBox::DrawItem
Вызывается платформой при изменении визуального аспекта флажка, нарисованного владельцем.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Параметры
lpDrawItemStruct
Длинный DRAWITEMSTRUCT
указатель на структуру, содержащую сведения о типе документа, необходимом.
Замечания
itemState
DRAWITEMSTRUCT
Элементы itemAction
структуры определяют выполняемую операцию рисования.
По умолчанию эта функция рисует список флажков по умолчанию, состоящий из списка строк с флажком по умолчанию слева. Размер списка флажков — это один из указанных в Create
.
Переопределите эту функцию-член, чтобы реализовать рисование контрольных списков владельца, которые не являются стандартными, например флажками со списками, не являющимися строками, с элементами переменной высоты или флажками, которые не указаны слева. Приложение должно восстановить все объекты интерфейса графического устройства (GDI), выбранные для контекста отображения, предоставленного lpDrawItemStruct
перед завершением этой функции-члена.
Если элементы флажка не все одинаковые высоты, должен быть LBS_OWNERVARIABLE
стиль флажка (указанный в Create
) и переопределить функциюMeasureItem
.
CCheckListBox::Enable
Вызовите эту функцию, чтобы включить или отключить элемент флажка.
void Enable(
int nIndex,
BOOL bEnabled = TRUE);
Параметры
nIndex
Индекс элемента флажка для включения.
bEnabled
Указывает, включен или отключен элемент.
CCheckListBox::GetCheck
Извлекает состояние указанного флажка.
int GetCheck(int nIndex);
Параметры
nIndex
Отсчитываемый от нуля индекс флажка, который содержится в списке.
Возвращаемое значение
Состояние указанного флажка. В следующей таблице перечислены возможные значения.
значение | Описание |
---|---|
BST_CHECKED |
Установлен флажок. |
BST_UNCHECKED |
Флажок не установлен. |
BST_INDETERMINATE |
Состояние флажка является неопределенным. |
CCheckListBox::GetCheckStyle
Вызовите эту функцию, чтобы получить стиль флажка.
UINT GetCheckStyle();
Возвращаемое значение
Стиль флажков элемента управления.
Замечания
Дополнительные сведения о возможных стилях см. в разделе SetCheckStyle
.
CCheckListBox::IsEnabled
Вызовите эту функцию, чтобы определить, включен ли элемент.
BOOL IsEnabled(int nIndex);
Параметры
nIndex
Индекс элемента.
Возвращаемое значение
Ненулевое значение, если элемент включен; в противном случае — 0.
CCheckListBox::MeasureItem
Вызывается платформой при создании флажка со стилем без дефисов.
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
Параметры
lpMeasureItemStruct
Длинный указатель на структуру MEASUREITEMSTRUCT
.
Замечания
По умолчанию эта функция-член ничего не делает. Переопределите эту функцию-член и заполните структуру MEASUREITEMSTRUCT
, чтобы сообщить Windows о измерениях элементов контрольного списка. Если флажок создан с LBS_OWNERDRAWVARIABLE
помощью стиля, платформа вызывает эту функцию-член для каждого элемента в списке. В противном случае этот элемент вызывается только один раз.
CCheckListBox::OnGetCheckPosition
Платформа вызывает эту функцию, чтобы получить позицию и размер флажка в элементе.
virtual CRect OnGetCheckPosition(
CRect rectItem,
CRect rectCheckBox);
Параметры
rectItem
Позиция и размер элемента списка.
rectCheckBox
Положение и размер элемента по умолчанию.
Возвращаемое значение
Положение и размер флажка элемента.
Замечания
Реализация по умолчанию возвращает только позицию и размер флажка по умолчанию (rectCheckBox
). По умолчанию флажок выравнивается в левом верхнем углу элемента и является стандартным размером флажка. Могут возникнуть случаи, когда вы хотите установить флажки справа или установить больший или меньший флажок. В этих случаях переопределите OnGetCheckPosition
положение и размер флажка в элементе.
CCheckListBox::SetCheck
Задает состояние указанного флажка.
void SetCheck(
int nIndex,
int nCheck);
Параметры
nIndex
Отсчитываемый от нуля индекс флажка, который содержится в списке.
nCheck
Состояние кнопки для указанного флажка. Сведения о возможных значениях см. в разделе "Примечания".
Замечания
В следующей nCheck
таблице перечислены возможные значения параметра.
значение | Описание |
---|---|
BST_CHECKED |
Установите указанный флажок. |
BST_UNCHECKED |
Снимите указанный флажок. |
BST_INDETERMINATE |
Задайте для заданного состояния флажка неопределенное значение. Это состояние доступно только в том случае, если установлен или BS_3STATE установлен стиль BS_AUTO3STATE флажка. Дополнительные сведения см. в разделе "Стили кнопок". |
CCheckListBox::SetCheckStyle
Вызовите эту функцию, чтобы задать стиль флажков в флажке.
void SetCheckStyle(UINT nStyle);
Параметры
nStyle
Определяет стиль флажков в флажке.
Замечания
Допустимые стили:
BS_CHECKBOX
BS_AUTOCHECKBOX
BS_AUTO3STATE
BS_3STATE
Дополнительные сведения об этих стилях см. в разделе "Стили кнопок".